4D v13.4

Operadores de Comparação

Página Inicial

 
4D v13.4
Operadores de Comparação

Operadores de Comparação  


 

 

As tabelas nesta seção mostram os operadores de comparação aplicados a expressões de tipo string, numérico, data, hora, ponteiro e imagem com metadados (você não pode usá-los com array ou expressões do tipo BLOB). Uma expressão que utiliza um operador de comparação devolve um valor booleano, TRUE ou FALSE.

Note: você pode comparar duas imagens usando o comando Equal pictures.

OperaçãoSintaxeDevolveExpressãoValor
IgualdadeString= StringBooleano"abc" = "abc"True
"abc" = "abd"False
DesigualdadeString# StringBooleano"abc" # "abd"True
"abc" # "abc"False
Maior queString> StringBooleano "abd" > "abc"True
"abc" > "abc"False
Menor queString< StringBooleano"abc" < "abd"True
"abc" < "abc"False
Maior que ou igual aString>= StringBooleano "abd" >= "abc"True
"abc" >= "abd"False
Menor que ou igual aString<= StringBooleano "abc" <= "abd"True
"abd" <= "abc"False
Contém palavraString% StringBooleano"Alpha Bravo" % "Bravo"True
"Alpha Bravo" % "ravo"False
-imagem% StringBooleano<em>Picture_expr</em> % "Mer"True (*)

(*) Se a palavra-chave "Mer" tem sido associado com a imagem guardada na expressão imagem (campo ou variável).

Importante: ao final desta seção se oferece informação adicional sobre comparações de strings.

OperaçãoSintaxeDevolveExpressãoValor
IgualdadeNúmero = NúmeroBooleano10 = 10True
10 = 11False
DesigualdadeNúmero # NúmeroBooleano10 #11True
10 # 10False
Maior queNúmero > NúmeroBooleano11 > 10True
10 > 11False
Menor queNúmero < NúmeroBooleano10 < 11True
11 < 10False
Maior que ou igual aNúmero >= NúmeroBooleano11 >= 10True
10 >= 11False
Menor que o igual aNúmero <= NúmeroBooleano10 <= 11True
11 <= 10False

OperaçãoSintaxeDevolveExpressãoValor
IgualdadeData= DataBooleano!1/1/97! =!1/1/97!True
!1/20/97! =!1/1/97!False
DesigualdadeData# DataBooleano!1/20/97! # !1/1/97!True
!1/1/97! # !1/1/97!False
Maior queData> DataBooleano!1/20/97! > !1/1/97!True
!1/1/97! > !1/1/97!False
Menor queData< DataBooleano!1/1/97! < !1/20/97!True
!1/1/97! < !1/1/97!False
Maior que ou igual aData>=DataBooleano!1/20/97! >=!1/1/97!True
!1/1/97!>=!1/20/97!False
Menor que ou igual aData<= DataBooleano!1/1/97!<=!1/20/97!True
!1/20/97!<=!1/1/97!False

OperaçãoSintaxeDevolveExpressãoValor
IgualdadeHora= HoraBooleano?01:02:03? = ?01:02:03?True
?01:02:03? = ?01:02:04?False
DesigualdadeHora# HoraBooleano?01:02:03? # ?01:02:04?True
?01:02:03? # ?01:02:03?False
Maior 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
Maior que ou igual aHora>= HoraBooleano?01:02:03? >=?01:02:03?True
?01:02:03? >=?01:02:04?False
Menor que ou igual aHora<= HoraBooleano?01:02:03? <=?01:02:03?True
?01:02:04? <=?01:02:03?False

Com:

  ` vPtrA e vPtrB apontam ao mesmo objeto
 vPtrA:=->umObjeto
 vPtrB:=->umObjeto
  ` vPtrC aponta a outro objeto
 vPtrC:=->outroObjeto
OperaçãoSintaxeDevolvidoExpressãoValor
IgualdadePonteiro= PonteiroBooleanovPtrA = vPtrBTrue
vPtrA = vPtrCFalse
DesigualdadePonteiro# PonteiroBooleanovPtrA # vPtrCTrue
vPtrA # vPtrBFalse

  • As strings se comparam caractere por caractere (exceto no caso de pesquisas por palavras chaves, ver a seguir).
  • Quando se comparam string, não se consideram as maiúsculas e minúsculas; portanto, "a"="A" devolve TRUE. Para saber se os caracteres estão em maiúsculas ou minúsculas, compare seus códigos de caracteres. Por exemplo, a seguinte expressão devolve FALSE:
     Character code("A")=Character code("a") // porque 65 não é igual a 97
  • Quando se comparam string, os caracteres diacríticos se comparam utilizando a tabela de comparação de caracteres do sistema de seu ordenador. Por exemplo, as seguintes expressões devolvem TRUE:
 "n"="ñ"
 "n"="Ñ"
 "A"="å"
  // etc.
  • A diferença de outras comparações de string, as pesquisas por palavras chaves procuram "palavras" em "textos": as palavras são avaliadas global e individualmente. O operador % sempre devolve False se a pesquisa se refere a várias palavras ou só parte de uma palavra (por exemplo, uma silaba). As "palavras" são string de caracteres rodeadas por "separadores," que são os espaços e os caracteres de pontuação. Os números podem ser pesquisados porque são avaliados como strings; entretanto, os separadores decimais ( . , ) e outros símbolos (moeda, temperatura, etc.) são ignorados.
     "Alpha Bravo Charlie"%"Bravo" // Devolve True
     "Alpha Bravo Charlie"%"vo" ` Devolve False
     "Alpha Bravo Charlie"%"Alpha Bravo" // Devolve False
     "Alpha,Bravo,Charlie"%"Alpha" // Devolve True
     "Software and Computers"%"comput@" // Devolve True

Nota: para maior informação sobre as regras de como são levadas em consideração as palavras chaves, por favor visite a seguinte direção: http://www.unicode.org/unicode/reports/tr29/#Word_Boundaries.

  • O caractere arroba (@) pode ser utilizado em toda comparação de strings em substituição de um ou vários caracteres. Por exemplo, a seguinte expressão é TRUE:
     "abcdefghij"="abc@"


    O caractere arroba deve ser utilizado nol segundo operando (a string a direita do operador) para igualar todo número de caracteres. A seguinte expressão é FALSE, porque a arroba @ se considera como um só caractere no primeiro operando:
     "abc@"="abcdefghij"


    A arroba significa “um ou mais caracteres ou nada”. As seguintes expressões são TRUE:
     "abcdefghij"="abcdefghij@"
     "abcdefghij"="@abcdefghij"
     "abcdefghij"="abcd@efghij"
     "abcdefghij"="@abcdefghij@"
     "abcdefghij"="@abcde@fghij@"


    Por outro lado, em qualquer caso, uma comparação de strings com duas arrobas consecutivas sempre devolverá FALSE. A seguinte expressão é FALSE:
     "abcdefghij"="abc@@fg"


    Quando o operador de comparação é ou contém um símbolo < ou >, só é compatível a comparação com um só caractere coringa ao final do operando:
     "abcd"<="abc@" // Comparação válida
     "abcd"<="abc@ef"/Comparação não válida/

Dica: se quer executar comparações ou pesquisas utilizando @ como um caractere (e não como um coringa), tem duas opções:

  • Utilize a instrução Character code (At sign).
    Imagine, por exemplo, que quer saber se uma string termina com o caractere @.
    - a seguinte expressão (se $vsValor não estiver vazia) sempre é TRUE:
     ($vsValueLength($vsValue)≥="@")

    - a seguinte expressão se avaliará corretamente:
     (Character code($vsValueLength($vsValue)≥)#64)
  • Utilize a opção "Considerar @ como um coringa só ao começo ou ao final de patrões de texto", acessível utilizando a caixa de diálogo de Preferências.

Esta opção lhe permite definir como se interpreta o caractere @ quando se inclui em uma string de caracteres. Como tal,  ou de influir em como os operadores de comparação se utilizam em Query ou Order By. Para maior informação, consulte o manual de Desenho.

 
PROPRIEDADES 

Produto: 4D
Tema: Operadores

 
VER TAMBÉM 

Operadores
Operadores de bit
Operadores de data
Operadores de Hora
Operadores de Imagem
Operadores Lógicos
Operadores Numéricos