sql >> Databáze >  >> RDS >> Mysql

Jak funguje funkce REGEXP_LIKE() v MySQL

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.


  1. K čemu se v PL/pgSQL používají '$$'

  2. Jaký je nejpřímější způsob, jak vyplnit prázdná data ve výsledcích SQL (na konci mysql nebo perl)?

  3. MySQL vs MySQLi při použití PHP

  4. SQL Server Lock Eskalace