使用筛选器函数
筛选器函数基本上用于检索某处的值,并以包括在单引号中的字符串方式返回值。它适用于筛选器函数的全部变化情况,函数包括:
筛选器函数的唯一目的是为用在 FILTER() 关键字中的 SQL WHERE 语句构建短语。所以只有在使用非 PROPERTY、V(变量)、E(事件参数)、SV(会话变量)、GC(全局常量)或 METHODPARM(方法参数)的表达式为 SQL WHERE 语句构建短语时才使用单独 FILTER() 函数,因为全部这些函数都有相应的筛选器函数,可以在不使用 FILTER() 的情况下使用。
例如,假设发送一个名为前缀的参数至您的事件。该事件设计用于对物料 ID 代码以该前缀开头的全部物料进行一些操作。您可以使用带有以下参数的“载入 IDO 集合”操作载入这些物料:
IDO("SLItems")
FILTER( SUBSTITUTE("Item LIKE {0}", FILTER( E(Prefix) + "*" ) ) )
PROPERTIES("Item, Description")
现在假设触发您的事件并向其传递前缀 “AL”。
在第一个 FILTER() 关键字内的表达式类似如下所述进行工作(从内到外):
-
E(Prefix) + "*"
评估:“AL”* - 外层的
FILTER()
为其加上单引号:“ 'AL*”' SUBSTITUTE()
函数将其转换为:“"Item LIKE 'AL*'” "
作为结果的字符串是一个完美的 SQL WHERE 语句,因为“IDO 运行时服务”将星号转换为一个 SQL 服务器可以理解的百分号。
注意: 另一方面,FE(Prefix) 表达式将评估 “" 'AL' "”,这不利于获得我们需要的单引号内的星号。所以,实际上我们推迟单引号的使用,直到恰当的时候。
使用另一个级别的 SUBSTITUTE() 或使用引用的引号进行的字符串串联也可以达到相同的效果,但使用 FILTER() 更简洁。