Обычно если при выполнении сравнения строк одно из выражений является зависимым от регистра, то сравнение выполняется также с учетом регистра.
-
expr LIKE pat [ESCAPE 'escape-char']
Функция производит сравнение с шаблоном, используя операции сравнения простых регулярных выражений в SQL. Возвращает
1
(ИСТИНА) или0
(ЛОЖЬ). ВыражениеLIKE
предусматривает использование следующих двух шаблонных символов вpat
:Символ Описание %
Соответствует любому количеству символов, даже нулевых _
Соответствует ровно одному символу mysql> SELECT 'David!' LIKE 'David_'; -> 1 mysql> SELECT 'David!' LIKE '%D%v%'; -> 1 mysql> select TRUNCATE(-1.999,1); -> -1.9
Начиная с MySQL 3.23.51 все числа округляются к нулю.
Если
D
является негативным, то тогда вся часть числа округляется к нулю.mysql> select truncate(122,-2); -> 100
Если требуется исследовать литералы при помощи шаблонного символа, следует предварить шаблонный символ экранирующим символом. Если экранирующий символ конкретно не указывается, то подразумевается применение символа '
\
':Строка Описание \%
Соответствует одному символу ' %
'\_
Соответствует одному символу ' _
'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 SOUNDS LIKE expr
Тоже самое что и
SOUNDEX(expr)=SOUNDEX(expr)
(доступно в версии 4.1 или новее). -
expr REGEXP pat
,expr RLIKE pat
Выполняет сравнение строкового выражения
expr
с шаблономpat
. Шаблон может представлять собой расширенное регулярное выражение. See Приложение F, Регулярные выражения в 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. Более подробное описание и примеры использования приведены в разделе Раздел 6.8, «Полнотекстовый поиск в MySQL».