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.