使用筛选器函数

筛选器函数基本上用于检索某处的值,并以包括在单引号中的字符串方式返回值。它适用于筛选器函数的全部变化情况,函数包括:

筛选器函数的唯一目的是为用在 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() 更简洁。