Обычно если при выполнении сравнения строк одно из выражений является зависимым от регистра, то сравнение выполняется также с учетом регистра.
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 Приложение 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. Более подробное описание и
примеры использования
приведены в разделе
Раздел 6.8, «Полнотекстовый поиск в MySQL».
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
© 1995-2005 MySQL AB. All rights reserved.
