В 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.