Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como a função REGEXP_LIKE() funciona no MySQL


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.