No MySQL, o
REGEXP_LIKE()
A função é usada para determinar se uma string corresponde ou não a uma expressão regular. A função retorna
1
se a string corresponder à expressão regular fornecida e 0
se não. Sintaxe
A sintaxe fica assim:
REGEXP_LIKE(expr, pat[, match_type])
Onde
expr
é a string de entrada e pat
é a expressão regular para a qual você está testando a string. O opcional
match_type
O argumento permite refinar a expressão regular. Por exemplo, você pode usar match_type
para especificar a correspondência com distinção entre maiúsculas e minúsculas ou não. Exemplo 1 – Uso básico
Segue um exemplo básico:
SELECT REGEXP_LIKE('Cat', '.*') Result;
Resultado:
+--------+ | Result | +--------+ | 1 | +--------+
Nesse caso, nossa expressão regular especifica qualquer caractere em qualquer sequência, então é claro que obtemos uma correspondência. A função retorna
1
para indicar uma correspondência. Exemplo 2 – Sem correspondência
Aqui está um exemplo em que a string de entrada não corresponde à expressão regular:
SELECT REGEXP_LIKE('Cat', 'b+') Result;
Resultado:
+--------+ | Result | +--------+ | 0 | +--------+
Nesse caso, nossa expressão regular especifica que deve haver um ou mais
b
caracteres em qualquer sequência. Nossa string de entrada não contém esse caractere e, portanto, 0
é devolvido. Exemplo 3 – Corresponder ao início de uma string
Aqui está um exemplo onde a expressão regular especifica que a string deve começar com certos caracteres:
SELECT REGEXP_LIKE('Cat', '^Ca') Result;
Resultado:
+--------+ | Result | +--------+ | 1 | +--------+
E aqui está o que acontece se não houver correspondência:
SELECT REGEXP_LIKE('Cat', '^Da') Result;
Resultado:
+--------+ | Result | +--------+ | 0 | +--------+
Exemplo 4 – Uma consulta de banco de dados
Esta função pode ser usada no
WHERE
cláusula de consultas ao banco de dados para retornar apenas as linhas que contêm o padrão:SELECT AlbumId, AlbumName FROM Albums WHERE REGEXP_LIKE(AlbumName, '^Power');
Resultado:
+---------+------------+ | AlbumId | AlbumName | +---------+------------+ | 1 | Powerslave | | 2 | Powerage | +---------+------------+
Segue a tabela completa:
SELECT AlbumId, AlbumName FROM Albums;
Resultado:
+---------+--------------------------+ | AlbumId | AlbumName | +---------+--------------------------+ | 1 | Powerslave | | 2 | Powerage | | 3 | Singing Down the Lane | | 4 | Ziltoid the Omniscient | | 5 | Casualties of Cool | | 6 | Epicloud | | 7 | Somewhere in Time | | 8 | Piece of Mind | | 9 | Killers | | 10 | No Prayer for the Dying | | 11 | No Sound Without Silence | | 12 | Big Swing Face | | 13 | Blue Night | | 14 | Eternity | | 15 | Scandinavia | | 16 | Long Lost Suitcase | | 17 | Praise and Blame | | 18 | Along Came Jones | | 19 | All Night Wrong | | 20 | The Sixteen Men of Tain | +---------+--------------------------+
Exemplo 5 – O match_type
Argumento
Você pode fornecer um argumento adicional para determinar o tipo de correspondência. Isso permite que você especifique coisas como se a correspondência diferencia maiúsculas de minúsculas, se deve ou não incluir terminadores de linha, etc.
Aqui está um exemplo de especificação de uma correspondência que diferencia maiúsculas de minúsculas e uma correspondência que não diferencia maiúsculas de minúsculas:
SELECT REGEXP_LIKE('Cat', '^ca', 'c') 'Case-Sensitive', REGEXP_LIKE('Cat', '^ca', 'i') 'Case-Insensitive';
Resultado:
+----------------+------------------+ | Case-Sensitive | Case-Insensitive | +----------------+------------------+ | 0 | 1 | +----------------+------------------+
O
match_type
argumento pode conter os seguintes caracteres:c
- Correspondência com distinção entre maiúsculas e minúsculas.
i
- Correspondência sem distinção entre maiúsculas e minúsculas.
m
- Modo de várias linhas. Reconhecer terminadores de linha dentro da string. O comportamento padrão é combinar terminadores de linha apenas no início e no final da expressão de string.
n
- O
.
caractere corresponde aos terminadores de linha. O padrão é para.
correspondência para parar no final de uma linha. u
- Finalizações de linha somente para Unix. Apenas o caractere de nova linha é reconhecido como uma linha que termina com
.
,^
e$
operadores de correspondência.
Mais exemplos
Você pode ver mais exemplos de expressões regulares básicas em Exemplos do MySQL REGEXP.
REGEXP
é um sinônimo para REGEXP_LIKE()
, para que você possa usar os exemplos de forma intercambiável. Consulte também Sintaxe de Expressão Regular na documentação do MySQL.