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.