4D v13.4

Operadores de comparación

Inicio

 
4D v13.4
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

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. 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

Nota: para mayor información sobre las reglas sobre cómo se tienen en cuenta las palabras claves, por favor visite la siguiente dirección: http://www.unicode.org/unicode/reports/tr29/#Word_Boundaries.

  • 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:
     ($vsValueLength($vsValue)≥="@")

    - la siguiente expresión se evaluará correctamente:
     (Character code($vsValueLength($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.

 
PROPIEDADES 

Producto: 4D
Tema: Operadores

 
VER TAMBIÉN 

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