Mysql
 sql >> Database >  >> RDS >> Mysql

Come funziona la funzione REGEXP_LIKE() in MySQL

In MySQL, il REGEXP_LIKE() La funzione viene utilizzata per determinare se una stringa corrisponde o meno a un'espressione regolare.

La funzione restituisce 1 se la stringa corrisponde all'espressione regolare fornita e 0 in caso contrario.

Sintassi

La sintassi è questa:

REGEXP_LIKE(expr, pat[, match_type])

Dove expr è la stringa di input e pat è l'espressione regolare per la quale stai testando la stringa.

Il match_type facoltativo argomento consente di perfezionare l'espressione regolare. Ad esempio, puoi utilizzare match_type per specificare la corrispondenza con distinzione tra maiuscole e minuscole o meno.

Esempio 1 – Utilizzo di base

Ecco un esempio di base:

SELECT REGEXP_LIKE('Cat', '.*') Result;

Risultato:

+--------+
| Result |
+--------+
|      1 |
+--------+

In questo caso, la nostra espressione regolare specifica qualsiasi carattere in qualsiasi sequenza, quindi ovviamente otteniamo una corrispondenza. La funzione restituisce 1 per indicare una corrispondenza.

Esempio 2 – Nessuna corrispondenza

Ecco un esempio in cui la stringa di input non corrisponde all'espressione regolare:

SELECT REGEXP_LIKE('Cat', 'b+') Result;

Risultato:

+--------+
| Result |
+--------+
|      0 |
+--------+

In questo caso, la nostra espressione regolare specifica che dovrebbero esserci uno o più b caratteri in qualsiasi sequenza. La nostra stringa di input non contiene questo carattere e quindi 0 viene restituito.

Esempio 3 – Abbina l'inizio di una stringa

Ecco un esempio in cui l'espressione regolare specifica che la stringa deve iniziare con determinati caratteri:

SELECT REGEXP_LIKE('Cat', '^Ca') Result;

Risultato:

+--------+
| Result |
+--------+
|      1 |
+--------+

Ed ecco cosa succede se non c'è corrispondenza:

SELECT REGEXP_LIKE('Cat', '^Da') Result;

Risultato:

+--------+
| Result |
+--------+
|      0 |
+--------+

Esempio 4:una query al database

Questa funzione può essere utilizzata in WHERE clausola delle query del database per restituire solo le righe che contengono il modello:

SELECT AlbumId, AlbumName
FROM Albums
WHERE REGEXP_LIKE(AlbumName, '^Power');

Risultato:

+---------+------------+
| AlbumId | AlbumName  |
+---------+------------+
|       1 | Powerslave |
|       2 | Powerage   |
+---------+------------+

Ecco la tabella completa:

SELECT AlbumId, AlbumName
FROM Albums;

Risultato:

+---------+--------------------------+
| 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  |
+---------+--------------------------+

Esempio 5 – Il match_type Argomento

È possibile fornire un argomento aggiuntivo per determinare il tipo di corrispondenza. Ciò ti consente di specificare cose come se la corrispondenza fa distinzione tra maiuscole e minuscole, se includere o meno i terminatori di riga, ecc.

Ecco un esempio di specifica di una corrispondenza con distinzione tra maiuscole e minuscole e una corrispondenza senza distinzione tra maiuscole e minuscole:

SELECT 
  REGEXP_LIKE('Cat', '^ca', 'c') 'Case-Sensitive',
  REGEXP_LIKE('Cat', '^ca', 'i') 'Case-Insensitive';

Risultato:

+----------------+------------------+
| Case-Sensitive | Case-Insensitive |
+----------------+------------------+
|              0 |                1 |
+----------------+------------------+

Il match_type argomento può contenere i seguenti caratteri:

c
Corrispondenza con distinzione tra maiuscole e minuscole.
i
Corrispondenza senza distinzione tra maiuscole e minuscole.
m
Modalità a più righe. Riconosci i terminatori di riga all'interno della stringa. Il comportamento predefinito prevede la corrispondenza dei terminatori di riga solo all'inizio e alla fine dell'espressione stringa.
n
Il . il carattere corrisponde ai terminatori di riga. L'impostazione predefinita è . corrispondenza per fermarsi alla fine di una riga.
u
Finiture di riga solo Unix. Solo il carattere di nuova riga viene riconosciuto come riga che termina con il . , ^ e $ operatori di corrispondenza.

Altri esempi

Puoi vedere altri esempi di espressioni regolari di base in MySQL REGEXP Examples. REGEXP è sinonimo di REGEXP_LIKE() , così puoi usare gli esempi in modo intercambiabile.

Vedi anche la sintassi delle espressioni regolari dalla documentazione di MySQL.