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

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

В MySQL, REGEXP_LIKE() функцията се използва, за да определи дали низ съответства на регулярен израз.

Функцията връща 1 ако низът съвпада с предоставения регулярен израз и 0 ако не е така.

Синтаксис

Синтаксисът е така:

REGEXP_LIKE(expr, pat[, match_type])

Където expr е входният низ и pat е регулярният израз, срещу който тествате низа.

Незадължителният match_type аргумент ви позволява да прецизирате регулярния израз. Например, можете да използвате match_type за да зададете съвпадение, чувствително към малки и големи букви, или не.

Пример 1 – Основна употреба

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

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

Резултат:

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

В този случай нашият регулярен израз определя всеки знак във всяка последователност, така че разбира се получаваме съвпадение. Функцията връща 1 за да посочите съвпадение.

Пример 2 – Няма съвпадение

Ето пример, при който входният низ не съвпада с регулярния израз:

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

Резултат:

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

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

Пример 3 – Съпоставяне на началото на низ

Ето пример, в който регулярният израз посочва, че низът трябва да започва с определени знаци:

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

Резултат:

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

И ето какво се случва, ако няма съвпадение:

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

Резултат:

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

Пример 4 – Заявка за база данни

Тази функция може да се използва в 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  |
+---------+--------------------------+

Пример 5 – match_type Аргумент

Можете да предоставите допълнителен аргумент, за да определите типа на съвпадението. Това ви позволява да укажете неща като това дали съвпадението е чувствително или не, дали да включвате или не терминатори на ред и т.н.

Ето пример за посочване на съвпадение, чувствително към главни и малки букви:

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

Резултат:

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

match_type аргументът може да съдържа следните знаци:

c
Отчитане на главни и малки букви.
i
Съответствие без разлика в главни и малки букви.
m
Режим на няколко реда. Разпознаване на завършващите линии в низа. Поведението по подразбиране е да съвпадат терминатори на ред само в началото и в края на низовия израз.
n
. символът съвпада с терминатори на ред. По подразбиране е за . съвпадение за спиране в края на ред.
u
Окончания на редове само за Unix. Само символът за нов ред се разпознава като ред, завършващ с . , ^ и $ оператори за съвпадение.

Още примери

Можете да видите повече примери за основни регулярни изрази в MySQL REGEXP Examples. REGEXP е синоним на REGEXP_LIKE() , така че можете да използвате примерите взаимозаменяемо.

Вижте също Синтаксис на регулярните изрази от документацията на MySQL.


  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 Query

  2. Как да показвате Unicode данни с PHP

  3. sql се присъединява като диаграма на Venn

  4. Как да добавите ненулево ограничение към съществуваща колона в MySQL

  5. MySQL бързо премахва дубликати от голяма база данни