Las tablas en esta sección muestran los operadores de comparación. Estos operadores pueden ser aplicados a expresiones de tipo cadena, numérico, fecha, hora, puntero e imagen con metadatos (no puede utilizarlos con expresiones de tipo array o BLOB). Una expresión que utiliza un operador de comparación devuelve un valor booleano, TRUE o FALSE.
Nota: es posible comparar dos imágenes utilizando el comando Equal pictures.
Las cadenas se comparan carácter por carácter (excepto en el caso de búsquedas por palabras claves, ver a continuación).
Cuando se comparan cadenas, no se tienen en cuenta las mayúsculas y minúsculas; por lo tanto, "a"="A" devuelve TRUE. Para saber si los caracteres están en mayúsculas o minúsculas, compare sus códigos de caracteres. Por ejemplo, la siguiente expresión devuelve FALSE:
Character code("A")=Character code("a") // porque 65 no es igual a 97
Cuando se comparan cadenas, los caracteres diacríticos se comparan utilizando la tabla de comparación de caracteres del sistema de su ordenador. Por ejemplo, las siguientes expresiones devuelven TRUE:
"n"="ñ"
"n"="Ñ"
"A"="å" // etc.
A diferencia de otras comparaciones de cadena, las búsquedas por palabras claves buscan "palabras" en "textos": las palabras se evalúan global e individualmente. El operador % siempre devuelve False si la búsqueda concierne varias palabras o sólo parte de una palabra (por ejemplo, una silaba). Las "palabras" son cadenas de caracteres rodeadas por "separadores," que son los espacios y los caracteres de puntuación. Un apostrofe, como en “Today's”, por lo general se considera como parte de la palabra, pero se ignorará en ciertos casos (ver las reglas abajo). Los números pueden buscarse porque son evaluados como cadenas; sin embargo, los separadores decimales ( . , ) y otros símbolos (moneda, temperatura, etc.) se ignorarán.
Notas: - 4D utiliza la librería ICU para la detección de palabras claves. Para mayor información sobre las reglas implementadas, por favor visite la siguiente dirección:http://www.unicode.org/unicode/reports/tr29/#Word_Boundaries
- En la versión japonesa, 4D utiliza por defecto la librería Mecab en lugar de ICU, para la detección de palabras claves. Para mayor información, consulte Soporte de Mecab (versión japonesa).
El carácter arroba (@) puede utilizarse en toda comparación de cadenas en reemplazo de uno o varios caracteres. Por ejemplo, la siguiente expresión es TRUE:
"abcdefghij"="abc@"
El carácter arroba debe utilizarse en el segundo operando (la cadena a la derecha del operador) para igualar todo número de caracteres. La siguiente expresión es FALSE, porque la arroba @ se considera como un solo carácter en el primer operando:
"abc@"="abcdefghij"
La arroba significa “uno o más caracteres o nada”. Las siguientes expresiones son TRUE:
Por otra parte, en cualquier caso, una comparación de cadenas con dos arrobas consecutivas siempre devolverá FALSE. La siguiente expresión es FALSE:
"abcdefghij"="abc@@fg"
Cuando el operador de comparación es o contiene un símbolo < o >, sólo soporta la comparación con un solo carácter comodín al final del operando:
"abcd"<="abc@" // Comparación válida
"abcd"<="abc@ef"/Comparación no válida/
Consejo: si quiere ejecutar comparaciones o búsquedas utilizando @ como un carácter (y no como un comodín), tiene dos opciones:
Utilice la instrucción Character code(At sign). Imagine, por ejemplo, que quiere saber si una cadena termina con el carácter @. - la siguiente expresión (si $vsValor no está vacía) siempre es TRUE:
($vsValue[[Length($vsValue)]]="@")
- la siguiente expresión se evaluará correctamente:
(Character code($vsValue[[Length($vsValue)]])#64)
Utilice la opción "Considerar @ como un comodín sólo al comienzo o al final de patrones de texto", accesible utilizando la caja de diálogo de Preferencias. Esta opción le permite definir cómo se interpreta el carácter @ cuando se incluye en una cadena de caracteres. Como tal, puede influir en cómo los operadores de comparación se utilizan en Query u Order By. Para mayor información, consulte el Manual de Diseño.