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). ComLIKEvocê 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 oLIKEdo 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
LIKEatual 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 exprO 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. Retorna1seexprconincide 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]';-> 1REGEXPeRLIKEusam 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 padO mesmo que
NOT (expr REGEXP pad).STRCMP(expr1,expr2)STRCMP()retorna0se as string são a mesma,-1se o primeiro argumento é menor que o segundo de acordo com a ordenação atual e1em 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 MODEfoi adicionada na versão 4.0.1,WITH QUERY EXPANSIONfoi adicionado na versão 4.1.1. Para detalhes e exemplos de uso, veja "Pesquisa Full-text no MySQL".