V MySQL, REGEXP_LIKE() Funkce se používá k určení, zda řetězec odpovídá regulárnímu výrazu.
Funkce vrátí 1 pokud řetězec odpovídá zadanému regulárnímu výrazu, a 0 pokud ne.
Syntaxe
Syntaxe vypadá takto:
REGEXP_LIKE(expr, pat[, match_type])
Kde expr je vstupní řetězec a pat je regulární výraz, proti kterému testujete řetězec.
Volitelný match_type argument umožňuje upřesnit regulární výraz. Můžete například použít match_type pro určení shody rozlišující malá a velká písmena.
Příklad 1 – Základní použití
Zde je základní příklad:
SELECT REGEXP_LIKE('Cat', '.*') Result; Výsledek:
+--------+ | Result | +--------+ | 1 | +--------+
V tomto případě náš regulární výraz určuje libovolný znak v libovolné sekvenci, takže samozřejmě získáme shodu. Funkce vrátí 1 k označení shody.
Příklad 2 – Žádná shoda
Zde je příklad, kdy vstupní řetězec neodpovídá regulárnímu výrazu:
SELECT REGEXP_LIKE('Cat', 'b+') Result; Výsledek:
+--------+ | Result | +--------+ | 0 | +--------+
V tomto případě náš regulární výraz určuje, že by měl existovat jeden nebo více b znaky v libovolném pořadí. Náš vstupní řetězec tento znak neobsahuje, a proto 0 je vráceno.
Příklad 3 – Porovnejte začátek řetězce
Zde je příklad, kde regulární výraz určuje, že řetězec musí začínat určitými znaky:
SELECT REGEXP_LIKE('Cat', '^Ca') Result; Výsledek:
+--------+ | Result | +--------+ | 1 | +--------+
A zde je to, co se stane, pokud nenastane žádná shoda:
SELECT REGEXP_LIKE('Cat', '^Da') Result; Výsledek:
+--------+ | Result | +--------+ | 0 | +--------+
Příklad 4 – Databázový dotaz
Tuto funkci lze použít v WHERE klauzule databázových dotazů vrátit pouze ty řádky, které obsahují vzor:
SELECT AlbumId, AlbumName FROM Albums WHERE REGEXP_LIKE(AlbumName, '^Power');
Výsledek:
+---------+------------+ | AlbumId | AlbumName | +---------+------------+ | 1 | Powerslave | | 2 | Powerage | +---------+------------+
Zde je úplná tabulka:
SELECT AlbumId, AlbumName FROM Albums;
Výsledek:
+---------+--------------------------+ | 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 | +---------+--------------------------+
Příklad 5 – match_type Argument
Pro určení typu shody můžete zadat další argument. To vám umožňuje určit věci, jako je, zda se ve shodě rozlišují velká a malá písmena, zda mají či nemají obsahovat zakončovací znaky atd.
Zde je příklad zadání shody rozlišující malá a velká písmena a nerozlišující malá a velká písmena:
SELECT
REGEXP_LIKE('Cat', '^ca', 'c') 'Case-Sensitive',
REGEXP_LIKE('Cat', '^ca', 'i') 'Case-Insensitive'; Výsledek:
+----------------+------------------+ | Case-Sensitive | Case-Insensitive | +----------------+------------------+ | 0 | 1 | +----------------+------------------+
match_type argument může obsahovat následující znaky:
c- Rozlišování velkých a malých písmen.
i- Shoda nerozlišující malá a velká písmena.
m- Režim více řádků. Rozpoznejte zakončení řádku v řetězci. Výchozí chování je přiřazovat zakončení řádků pouze na začátek a konec řetězcového výrazu.
n- The
.znak se shoduje se zakončením řádku. Výchozí hodnota je pro.párování se zastaví na konci řádku. u- Koncovky řádků pouze pro Unix. Pouze znak nového řádku je rozpoznán jako řádek končící znakem
.,^a$operátory shody.
Další příklady
Další příklady základních regulárních výrazů můžete vidět v MySQL REGEXP Příklady. REGEXP je synonymem pro REGEXP_LIKE() , takže příklady můžete používat zaměnitelně.
Viz také Syntaxe regulárních výrazů v dokumentaci MySQL.