sql >> Databasteknik >  >> RDS >> Mysql

Hur REGEXP_LIKE()-funktionen fungerar i MySQL

I MySQL, REGEXP_LIKE() funktion används för att avgöra om en sträng matchar ett reguljärt uttryck eller inte.

Funktionen returnerar 1 om strängen matchar det angivna reguljära uttrycket och 0 om det inte gör det.

Syntax

Syntaxen ser ut så här:

REGEXP_LIKE(expr, pat[, match_type])

Där expr är inmatningssträngen och pat är det reguljära uttrycket som du testar strängen mot.

Den valfria match_type argument låter dig förfina det reguljära uttrycket. Du kan till exempel använda match_type för att ange skiftlägeskänslig matchning eller inte.

Exempel 1 – Grundläggande användning

Här är ett grundläggande exempel:

SELECT REGEXP_LIKE('Cat', '.*') Result;

Resultat:

+--------+
| Result |
+--------+
|      1 |
+--------+

I det här fallet anger vårt reguljära uttryck vilket tecken som helst i vilken sekvens som helst, så vi får naturligtvis en matchning. Funktionen returnerar 1 för att indikera en matchning.

Exempel 2 – Ingen matchning

Här är ett exempel där inmatningssträngen inte matchar det reguljära uttrycket:

SELECT REGEXP_LIKE('Cat', 'b+') Result;

Resultat:

+--------+
| Result |
+--------+
|      0 |
+--------+

I det här fallet anger vårt reguljära uttryck att det ska finnas en eller flera b tecken i valfri sekvens. Vår indatasträng innehåller inte detta tecken och därför 0 returneras.

Exempel 3 – Matcha början av en sträng

Här är ett exempel där det reguljära uttrycket anger att strängen måste börja med vissa tecken:

SELECT REGEXP_LIKE('Cat', '^Ca') Result;

Resultat:

+--------+
| Result |
+--------+
|      1 |
+--------+

Och här är vad som händer om det inte finns någon matchning:

SELECT REGEXP_LIKE('Cat', '^Da') Result;

Resultat:

+--------+
| Result |
+--------+
|      0 |
+--------+

Exempel 4 – En databasfråga

Denna funktion kan användas i WHERE klausul i databasfrågor för att endast returnera de rader som innehåller mönstret:

SELECT AlbumId, AlbumName
FROM Albums
WHERE REGEXP_LIKE(AlbumName, '^Power');

Resultat:

+---------+------------+
| AlbumId | AlbumName  |
+---------+------------+
|       1 | Powerslave |
|       2 | Powerage   |
+---------+------------+

Här är hela tabellen:

SELECT AlbumId, AlbumName
FROM Albums;

Resultat:

+---------+--------------------------+
| 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  |
+---------+--------------------------+

Exempel 5 – match_type Argument

Du kan ange ytterligare ett argument för att bestämma matchningstypen. Detta låter dig specificera saker som om matchningen är skiftlägeskänslig eller inte, om linjeavslutare ska inkluderas eller inte, etc.

Här är ett exempel på hur du anger en skiftlägeskänslig matchning och en skiftlägesokänslig matchning:

SELECT 
  REGEXP_LIKE('Cat', '^ca', 'c') 'Case-Sensitive',
  REGEXP_LIKE('Cat', '^ca', 'i') 'Case-Insensitive';

Resultat:

+----------------+------------------+
| Case-Sensitive | Case-Insensitive |
+----------------+------------------+
|              0 |                1 |
+----------------+------------------+

match_type argument kan innehålla följande tecken:

c
Skaftkänslig matchning.
i
Verkskiftsokänslig matchning.
m
Flerradsläge. Känn igen linjeavslutare i strängen. Standardbeteendet är att matcha linjeavslutare endast i början och slutet av stränguttrycket.
n
. tecken matchar radavslutare. Standard är för . matchar för att stanna i slutet av en rad.
u
Enbart Unix-radändelser. Endast nyradstecknet känns igen som en rad som slutar med . , ^ och $ matcha operatorer.

Fler exempel

Du kan se fler exempel på grundläggande reguljära uttryck på MySQL REGEXP Exempel. REGEXP är en synonym för REGEXP_LIKE() , så att du kan använda exemplen omväxlande.

Se även Syntax för reguljära uttryck från MySQL-dokumentationen.


  1. Hur lägger man till PostgreSQL-datakälla till WildFly 9.0?

  2. Hur skapar man en SQL-vy med SQLAlchemy?

  3. Hur man hittar namnet på en begränsning i SQL Server

  4. LINQ till SQL Take w/o Skip Orsakar flera SQL-satser