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