6.3.2 Строковые функции | Оглавление | 6.3.2.2 Чувствительность к регистру |
Обычно если при выполнении сравнения строк одно из выражений является зависимым от регистра, то сравнение выполняется также с учетом регистра.
expr LIKE pat [ESCAPE 'escape-char']
1
(ИСТИНА) или 0
(ЛОЖЬ).
Выражение LIKE
предусматривает использование следующих двух шаблонных
символов в pat
:
Символ | Описание |
% | Соответствует любому количеству символов, даже нулевых |
_ | Соответствует ровно одному символу |
mysql> SELECT 'David!' LIKE 'David_'; -> 1 mysql> SELECT 'David!' LIKE '%D%v%'; -> 1Если требуется исследовать литералы при помощи шаблонного символа, следует предварить шаблонный символ экранирующим символом. Если экранирующий символ конкретно не указывается, то подразумевается применение символа `\':
Строка | Описание |
\% | Соответствует одному символу `%' |
\_ | Соответствует одному символу `_' |
mysql> SELECT 'David!' LIKE 'David\_'; -> 0 mysql> SELECT 'David_' LIKE 'David\_'; -> 1Для указания конкретного экранирующего символа используется выражение
ESCAPE
:
mysql> SELECT 'David_' LIKE 'David|_' ESCAPE '|'; -> 1В следующих двух примерах показано, что сравнение строк производится с учетом регистра, если ни один из операндов не является строкой с двоичными данными:
mysql> SELECT 'abc' LIKE 'ABC'; -> 1 mysql> SELECT 'abc' LIKE BINARY 'ABC'; -> 0В функции
LIKE
допускаются даже числовые выражения! (Это расширение MySQL
по сравнению с ANSI SQL LIKE.)
mysql> SELECT 10 LIKE '1%'; -> 1Примечание: поскольку в MySQL применяются правила экранирования в строках, применяемые в языке C (например, `\n'), необходимо дублировать все символы `\', используемые в строках функции
LIKE
. Например, для поиска сочетания
символов `\n' его необходимо указать как `\\n'. Чтобы выполнить поиск
символа `\', он должен быть указан как `\\\\' (обратные слеши удаляются
дважды: сначала синтаксическим анализатором, а потом - при выполнении
сравнения с шаблоном, таким образом остается только один обратный слеш,
который и будет обрабатываться).
expr NOT LIKE pat [ESCAPE 'escape-char']
NOT (expr LIKE pat [ESCAPE 'escape-char'])
.
expr REGEXP pat
expr RLIKE pat
expr
с шаблоном pat
. Шаблон может
представлять собой расширенное регулярное выражение. See section G Регулярные выражения в MySQL. Возвращает 1
, если expr
соответствует pat
, в
противном случае - 0
. Функция RLIKE
является синонимом для REGEXP
, она
предусмотрена для совместимости с mSQL. Примечание: поскольку в MySQL
используются правила экранирования в строках, применяемые в языке C
(например, `\n'), необходимо дублировать все символы `\', используемые в
строках функции REGEXP
. Что касается версии MySQL 3.23.4, функция REGEXP
является независимой от регистра для нормальных строк (т.е. строк не с
двоичными данными):
mysql> SELECT 'Monty!' REGEXP 'm%y%%'; -> 0 mysql> SELECT 'Monty!' REGEXP '.*'; -> 1 mysql> SELECT 'new*\n*line' REGEXP 'new\\*.\\*line'; -> 1 mysql> SELECT "a" REGEXP "A", "a" REGEXP BINARY "A"; -> 1 0 mysql> SELECT "a" REGEXP "^[a-d]"; -> 1В
REGEXP
и RLIKE
используется текущий набор символов (ISO-8859-1 Latin1 по
умолчанию),
expr NOT REGEXP pat
expr NOT RLIKE pat
NOT (expr REGEXP pat)
.
STRCMP(expr1,expr2)
STRCMP()
возвращает: 0
, если строки идентичны, -1
- если первый
аргумент меньше второго (в соответствии с имеющимся порядком сортировки),
и 1
- в остальных случаях:
mysql> SELECT STRCMP('text', 'text2'); -> -1 mysql> SELECT STRCMP('text2', 'text'); -> 1 mysql> SELECT STRCMP('text', 'text'); -> 0
MATCH (col1,col2,...) AGAINST (expr)
MATCH (col1,col2,...) AGAINST (expr IN BOOLEAN MODE)
MATCH ... AGAINST()
используется для полнотекстового поиска и
возвращает величину релевантности - степень сходства между текстом в
столбцах (col1,col2,...)
и запросом expr
. Величина релевантности
представляет собой положительное число с плавающей точкой. Нулевая
релевантность означает отсутствие сходства. Функция MATCH ... AGAINST()
работает в версиях MySQL 3.23.23 или более поздних. Расширение IN BOOLEAN
MODE
было добавлено в версии 4.0.1. Более подробное описание и примеры
использования приведены в разделе section 6.8 Полнотекстовый поиск в MySQL.
6.3.2 Строковые функции | Оглавление | 6.3.2.2 Чувствительность к регистру |