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.