4D v16.3

Operadores de comparación

Inicio

 
4D v16.3
Operadores de comparación

Operadores de comparación  


 

 

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.

OperaciónSintaxisDevuelveExpresiónValor
IgualdadCadena= CadenaBooleano"abc" = "abc"True
"abc" = "abd"False
DesigualdadCadena# CadenaBooleano"abc" # "abd"True
"abc" # "abc"False
Mayor queCadena> CadenaBooleano "abd" > "abc"True
"abc" > "abc"False
Menor queCadena< CadenaBooleano"abc" < "abd"True
"abc" < "abc"False
Mayor que o igual aCadena>= CadenaBooleano "abd" >= "abc"True
"abc" >= "abd"False
Menor que o igual aCadena<= CadenaBooleano "abc" <= "abd"True
"abd" <= "abc"False
Contiene palabraCadena% CadenaBooleano"Alpha Bravo" % "Bravo"True
"Alpha Bravo" % "ravo"False
Imagen % CadenaBooleanoPicture_expr % "Mer"True (*)

(*) Si la palabra clave "Mer" está asociada a la imagen almacenada en la expresión imagen (campo o variable).

Importante:
al final de esta sección se ofrece información adicional sobre comparaciones de cadenas.

OperaciónSintaxisDevuelveExpresiónValor
IgualdadNúmero = NúmeroBooleano10 = 10True
10 = 11False
DesigualdadNúmero # NúmeroBooleano10 #11True
10 # 10False
Mayor queNúmero > NúmeroBooleano11 > 10True
10 > 11False
Menor queNúmero < NúmeroBooleano10 < 11True
11 < 10False
Mayor que o igual aNúmero >= NúmeroBooleano11 >= 10True
10 >= 11False
Menor que o igual aNúmero <= NúmeroBooleano10 <= 11True
11 <= 10False

Nota: para más información sobre la precisión de las comparaciones de igualdad de números reales, consulte el comando SET REAL COMPARISON LEVEL.

OperaciónSintaxisDevuelveExpresiónValor
IgualdadFecha= FechaBooleano!1/1/97! =!1/1/97!True
!1/20/97! =!1/1/97!False
DesigualdadFecha# FechaBooleano!1/20/97! # !1/1/97!True
!1/1/97! # !1/1/97!False
Mayor queFecha> FechaBooleano!1/20/97! > !1/1/97!True
!1/1/97! > !1/1/97!False
Menor queFecha< FechaBooleano!1/1/97! < !1/20/97!True
!1/1/97! < !1/1/97!False
Mayor que o igual aFecha>= FechaBooleano!1/20/97! >=!1/1/97!True
!1/1/97!>=!1/20/97!False
Menor que o igual aFecha<= FechaBooleano!1/1/97!<=!1/20/97!True
!1/20/97!<=!1/1/97!False

OperaciónSintaxisDevuelveExpresiónValor
IgualdadHora= HoraBooleano?01:02:03? = ?01:02:03?True
?01:02:03? = ?01:02:04?False
DesigualdadHora# HoraBooleano?01:02:03? # ?01:02:04?True
?01:02:03? # ?01:02:03?False
Mayor queHora> HoraBooleano?01:02:04? > ?01:02:03?True
?01:02:03? > ?01:02:03?False
Menor queHora< HoraBooleano?01:02:03? < ?01:02:04?True
?01:02:03? < ?01:02:03?False
Mayor que o igual aHora>= HoraBooleano?01:02:03? >=?01:02:03?True
?01:02:03? >=?01:02:04?False
Menor que o igual aHora<= HoraBooleano?01:02:03? <=?01:02:03?True
?01:02:04? <=?01:02:03?False

Con:

  ` vPtrA y vPtrB apuntan al mismo objeto
 vPtrA:=->unObjeto
 vPtrB:=->unObjeto
  ` vPtrC apunta a otro objeto
 vPtrC:=->otroObjeto
OperaciónSintaxisDevuelveExpresiónValor
IgualdadPuntero= PunteroBooleanovPtrA = vPtrBTrue
vPtrA = vPtrCFalse
DesigualdadPuntero# PunteroBooleanovPtrA # vPtrCTrue
vPtrA # vPtrBFalse

  • 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.
     "Alpha Bravo Charlie"%"Bravo" // Devuelve True
     "Alpha Bravo Charlie"%"vo" ` Devuelve False
     "Alpha Bravo Charlie"%"Alpha Bravo" // Devuelve False
     "Alpha,Bravo,Charlie"%"Alpha" // Devuelve True
     "Software and Computers"%"comput@" // Devuelve True

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:
     "abcdefghij"="abcdefghij@"
     "abcdefghij"="@abcdefghij"
     "abcdefghij"="abcd@efghij"
     "abcdefghij"="@abcdefghij@"
     "abcdefghij"="@abcde@fghij@"


    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.



Ver también 

Operadores
Operadores de bits
Operadores de fechas
Operadores de horas
Operadores de imágenes
Operadores lógicos
Operadores numéricos

 
PROPIEDADES 

Producto: 4D
Tema: Operadores

 
HISTORIA 

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v16)
Manual de lenguaje 4D ( 4D v16.1)
Manual de lenguaje 4D ( 4D v16.2)
Manual de lenguaje 4D ( 4D v16.3)