Usar funciones de filtro

Las funciones de filtro se usan básicamente para recuperar un valor de algún sitio y devolverlo como un cadena entre comillas simples. Esto se aplica a todas las variaciones de funciones de filtros, que incluyen los siguientes:

El único propósito de las funciones de filtro es construir frases de clausulas SQL WHERE, las cuales se utilizan en la palabra clave FILTER(). Por consiguiente el único uso de la función independiente FILTER() es cuándo se construye una frase de cláusula SQL WHERE utilizando una expresión que no es una PROPERTY, V (variable), E parámetro de evento), SV (variable de sesión), GC (constante global), o METHODPARM (parámetro de método), porque todas estas tienen funciones de filtro correspondiente que puede utilizar sin importarle acerca de FILTER() en sí mismo.

Por ejemplo, suponga que un parámetro con el nombre Prefijo se pasa a su evento. Este evento es designado para hacer algo a todos los elemento cuyos códigos id. de elementos comienzan por el prefijo. Podría cargar esos elementos utilizando una acción de cargar recolección IDO con los siguientes parámetros:


IDO("SLItems")
FILTER( SUBSTITUTE("Item LIKE {0}", FILTER( E(Prefix) + "*" ) ) )
PROPERTIES("Item, Description")

Ahora suponga que su evento se desencadena y se pasa el prefijo de AL.

La expresión dentro de la primera palabra clave FILTER() funciona de esta manera (desde dentro afuera):

  • E(Prefix) + "*" se evalúa en: 'AL*'
  • El FILTER() alrededor de esto lo pone entre comillas simples: 'AL*'
  • La función SUBSTITUTE() lo convierte en: "Artículo COMO 'AL*' "

Esta cadena resultante es una clausula ideal SQL WHERE, porque el servicio de tiempo de ejecución IDO convierte el asterisco en un signo de porcentaje que el servidor SQL entiende.

Nota:  Por otro lado, una expresión PE(Prefijo) evaluaría a " 'AL' ", lo cual no es propicio para obtener el asterisco donde lo necesitamos, dentro de las comillas simples. Así que, en efecto, estamos posponiendo que las comillas simples se envuelvan en el momento justo.

El mismo efecto se podría implementar usando otro nivel de SUBSTITUTE(), o concatenación de cadenas utilizando comillas entre comillas, pero FILTER() es más limpio.