4D v16.3

Operadores de Comparação

Página Inicial

 
4D v16.3
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

Nota: Para saber mais sobre a precisão de comparações de igualdade de números reais, veja o comando SET REAL COMPARISON LEVEL.

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. Um apóstrofe, como em “Today's”, geralmente se considera como parte da palavra, mas será ignorado em certos casos (ver as regras abaixo). 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

Notas:
- 4D utiliza a livraria ICU para a detecção de palavras chaves. Para maior informação sobre as regras implementadas, por favor visite o seguinte endereço:http://www.unicode.org/unicode/reports/tr29/#Word_Boundaries

- Na versão japonesa, 4D utiliza por padrão a livraria Mecab no lugar de ICU, para a detecção de palavras chaves. Para maior informação, consulte Suporte de Mecab (versão japonesa).

  • 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:
     ($vsValue[[Length($vsValue)]]="@")

    - a seguinte expressão se avaliará corretamente:
     (Character code($vsValue[[Length($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.



Ver também 

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

 
PROPRIEDADES 

Produto: 4D
Tema: Operadores

 
HISTÓRIA 

 
ARTICLE USAGE

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