Funções de Comparação de Strings
MySQL automaticamente converte números para quando necessário, e vice-versa:
mysql>SELECT 1+'1';
-> 2 mysql>SELECT CONCAT(2,' test');
-> '2 test'
Se você quiser converter um número em uma string de forma explicita, passe-o como um argumento de CONCAT()
.
Se uma função de string tem uma string binária como argumento, a string resultante é também um string binária. Um número convertido para uma string é tratado como um string binária. Isto afeta apenas a comparação.
Normalmente, se qualquer expressão em uma string é caso-sensitivo, a comparação é realizada no modo caso sensitivo.
expr LIKE pad [ESCAPE 'car-escape']
Correspondência de padrões usando uma simples expressão de comparações SQL. Retorna
1
(VERDADEIRO) ou0
(FALSO). ComLIKE
você pode usar os seguintes meta-caracteres no padrao:Car Descrição %
Corresponde a qualquer número de caracteres, até zero caracteres _
Corresponde a exatamente um caracter mysql>
SELECT 'David!' LIKE 'David_';
-> 1 mysql>SELECT 'David!' LIKE '%D%v%';
-> 1Para testar instâncias literais de um meta caracter, preceda o caracter com o carcter de escape. Se você não especificar o caracter de
ESCAPE
, assume-se '\
':String Description \%
Correponde a um caracter %
\_
Correponde a um caracter _
mysql>
SELECT 'David!' LIKE 'David\_';
-> 0 mysql>SELECT 'David_' LIKE 'David\_';
-> 1Para especificar um caracter de escape diferebte, use a cláusula
ESCAPE
:mysql>
SELECT 'David_' LIKE 'David|_' ESCAPE '|';
-> 1As seguintes instruções mostram que a comparação de strings são caso-insensitivo, a menos que um dos operandos seja uma string binária:
mysql>
SELECT 'abc' LIKE 'ABC';
-> 1 mysql>SELECT 'abc' LIKE BINARY 'ABC';
-> 0LIKE
é permitido em uma expressão numérica! (Esta é uma extensão MariaDB para oLIKE
do SQL-99.)mysql>
SELECT 10 LIKE '1%';
-> 1Nota: Como MariaDB usa sintaxe de escape do C em strings (por exemplo, '
\n
'), você deve dobrar qualquer '\
' que você usar em sua stringLIKE
. Por exemplo, para pesquisar por '\n
', especifique-o como '\\n
'. Para buscar por '\
', especifique-o como '\\\\
' (as barras invertidas são eliminadas uma vez pelo analizador e outra vez quando a correspondência de padrões é feita, deixando uma únicas barra invertida para ser verificada).Note: O
LIKE
atual não é umcaracter multi-byte
. Comparaçãoes são feitas caracter por caracter.expr NOT LIKE pad [ESCAPE 'car-escape']
O mesmo que
NOT (expr LIKE pad [ESCAPE 'car-escape'])
.expr SOUNDS LIKE expr
O mesmo que
SOUNDEX(expr)=SOUNDEX(expr)
(disponível apenas na versão 4.1 ou posterior).expr REGEXP pad
,expr RLIKE pad
Realiza a busca de padrões em uma expressã string com base no padrão
pad
. O padrão pode ser uma expressão regular extendida. Leia Apêndice G, Sintaxe de Expressões Regulares do MariaDB. Retorna1
seexpr
conincide compad
, senão retorna0
.RLIKE
é um sinônimo paraREGEXP
, fornecido para compatibilidade commSQL
. Nota: Como MariaDB usa a sintaxe de escape do C em strings (por exemplo, '\n
'), você deve dobrar qualquer '\
' que você use em sua stringREGEXP
. Como na versão 3.23.4 do MariaDB,REGEXP
é caso- insensitivo para strings normais (não binárias).mysql>
SELECT 'Monty!' REGEXP 'm%y%%';
-> 0 mysql>SELECT 'Monty!' REGEXP '.*';
-> 1 mysql>SELECT 'new*\n*line' REGEXP 'new\\*.\\*line';
-> 1 mysql>SELECT 'a' REGEXP 'A', 'a' REGEXP BINARY 'A';
-> 1 0 mysql>SELECT 'a' REGEXP '^[a-d]';
-> 1REGEXP
eRLIKE
usam o conjunto de caracteres atual (ISO-8859-1 Latin1 por padrão) para decidir o tipo de caracter.expr NOT REGEXP pad
,expr NOT RLIKE pad
O mesmo que
NOT (expr REGEXP pad)
.STRCMP(expr1,expr2)
STRCMP()
retorna0
se as string são a mesma,-1
se o primeiro argumento é menor que o segundo de acordo com a ordenação atual e1
em caso contrário:mysql>
SELECT STRCMP('texto', 'texto2');
-> -1 mysql>SELECT STRCMP('texto2', 'texto');
-> 1 mysql>SELECT STRCMP('texto', 'texto');
-> 0MATCH (col1,col2,...) AGAINST (expr [IN BOOLEAN MODE | WITH QUERY EXPANSION] )
MATCH ... AGAINST()
é usado para busca de textos completos e retorna a relvância - similaridade medidad entre o texto nas colunas(col1,col2,...)
e a consultaexpr
. Relevância é um número de ponto flutuante. Relevância zero significa que não houve nenhuma similaridade.MATCH ... AGAINST()
está disponível na versão 3.23.23 ou posterior do MariaDB. A extensãoIN BOOLEAN MODE
foi adicionada na versão 4.0.1,WITH QUERY EXPANSION
foi adicionado na versão 4.1.1. Para detalhes e exemplos de uso, veja "Pesquisa Full-text no MySQL".