Mysql
 sql >> база данни >  >> RDS >> Mysql

3 начина да откриете дали низ съответства на регулярен израз в MySQL

MySQL има редица функции и оператори, които ни позволяват да извършваме операции с помощта на регулярни изрази (regex). Тази статия представя два оператора и една функция, които ни позволяват да разберем дали низ съответства на регулярен израз, определен от даден шаблон.

Тези функции и оператори за регулярни изрази са:

  • REGEXP_LIKE()
  • REGEXP
  • RLIKE

Всички те са основно еквивалентни, тъй като операторите (вторите два) са синоними на функцията (първата). Във всеки случай можете да видите примери и за трите в действие по-долу.

REGEXP_LIKE() Функция

Първо, нека разгледаме функцията. Ето пример за стартиране на търсене на регулярни изрази с помощта на REGEXP_LIKE() функция:

SELECT 
  REGEXP_LIKE('Car', '^C') AS 'Match',
  REGEXP_LIKE('Bar', '^C') AS 'No Match';

Резултат:

+-------+----------+
| Match | No Match |
+-------+----------+
|     1 |        0 |
+-------+----------+

Първият низ съвпада (защото започва с C ), така че резултатът е 1 . Вторият низ не съвпада и така резултатът е 0 .

Тази функция обаче може да бъде много по-полезна от просто връщане на 1 или 0 . Например, може да се добави към WHERE клауза при запитване към база данни. В този случай можем да получим списък с редове, които съдържат съвпадение за шаблона.

Ето един пример:

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

Резултат:

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

Ето пълната таблица:

SELECT AlbumId, AlbumName
FROM Albums;

Резултат:

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

REGEXP Оператор

Ето как да направите същото с помощта на REGEXP оператор:

SELECT 
  'Car' REGEXP '^C' AS 'Match',
  'Bar' REGEXP '^C' AS 'No Match';

Резултат:

+-------+----------+
| Match | No Match |
+-------+----------+
|     1 |        0 |
+-------+----------+

И примерът с базата данни:

SELECT AlbumId, AlbumName
FROM Albums
WHERE AlbumName REGEXP '^Power';

Резултат:

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

Можете също да използвате NOT REGEXP за да върнете обратния резултат.

RLIKE Оператор

И тук използва RLIKE :

SELECT 
  'Car' RLIKE '^C' AS 'Match',
  'Bar' RLIKE '^C' AS 'No Match';

Резултат:

+-------+----------+
| Match | No Match |
+-------+----------+
|     1 |        0 |
+-------+----------+

И примерът с базата данни:

SELECT AlbumId, AlbumName
FROM Albums
WHERE AlbumName RLIKE '^Power';

Резултат:

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

В този случай просто смених REGEXP за RLIKE и остави останалата част от кода сама.

Можете също да използвате NOT RLIKE за да върнете обратния резултат.

Още REGEX функции

MySQL включва и няколко други функции и оператори за регулярни изрази. Три от тях са изброени по-долу. Технически, можете също да използвате първите два, за да „откриете“ дали даден низ съответства на модел на регулярни изрази (в този случай може би тази статия трябва да бъде озаглавена „5 начина за откриване дали низ съответства на регулярен израз в MySQL“, вместо просто „ 3 начина...”).

Както и да е, ето още три функции за регулярни изрази:

  • Можете да използвате REGEXP_INSTR() функция за връщане на началния индекс на подниз, който съответства на модела на регулярния израз.
  • REGEXP_SUBSTR() функцията връща подниз, който съответства на дадения модел на регулярен израз.
  • И REGEXP_REPLACE() функцията заменя появата на подниз в низ, който съответства на дадения модел на регулярен израз.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка:Клиентът не поддържа протокол за удостоверяване, поискан от сървъра; помислете за надграждане на MySQL клиента

  2. Пишете с главна буква. MySQL

  3. Регистрирайте всички заявки в mysql

  4. Как да импортирате файл на Excel в MySQL база данни

  5. Как работи функцията MID() в MySQL