Поиск

Функции сравнения строк

MySQL при необходимости автоматически преобразует числа в строки и обратно.
mysql> SELECT l+'l';
-> 2 mysql> SELECT CONCAT(2,' test');
-> '2 test1
Если требуется преобразовать число в строку явно, воспользуйтесь для этого функ­цией CAST () или CONCAT ( ):
mysql> SELECT 38.8, CAST(38.8 AS CHAR);
-> 38.8, '38.8' mysql> SELECT 38.8, CONCAT(38.8);
-> 38.8, '38.8'

Функция CAST O предпочтительнее, однако она недоступна в версиях MySQL, пред­шествующих 4.0.2.
Если строковой функции в качестве аргумента передана бинарная строка, результи­рующая строка также будет бинарной. Это касается только сравнений.
Обычно если любое выражение в сравнении строк чувствительно к регистру, то сравнение также чувствительно к регистру.

  • выражение LIKE шаблон [ESCAPE 'символ-отмены' ]
Проверка на соответствие шаблону, заданному простыми регулярными выраже­ниями SQL. Возвращает 1 (TRUE) или О (FALSE). Если выражение или шаблон равны NULL, возвращает NULL.
В шаблонах LIKE можно использовать следующие два символа:

mysql> SELECT 'David!1LIKE 'David_';
-> 1 mysql> SELECT 'David!' LIKE '%D%v%';
-> 1

Чтобы протестировать литеральные вхождения шаблонных символов, предваряй­те их символом отмены. Если конструкция ESCAPE не указана, предполагается 'V.

>mysql> SELECT 'David!1 LIKE 'David_';
-> 0 mysql> SELECT 'DavidJ LIKE 'DavidJ;
-> 1
Чтобы указать другой символ отмены, используйте конструкцию ESCAPE:
mysql> SELECT fDavid_' LIKE 'David|J ESCAPE '|f; -> 1
Следующие два оператора иллюстрируют, что сравнение строк нечувствительно к регистру, если только хотя бы один из операндов не является бинарной строкой:
raysql> SELECT 'abc' LIKE 'ABC;
-> 1 mysql> SELECT 'abc' LIKE BINARY 'ABC;
-> 0
В MySQL LIKE допускает числовые выражения. (Это расширение LIKE из стан­дартного SQL).
mysql> SELECT 10 LIKE'1%';
-> 1

Назаметку!
Поскольку MySQL применяет синтаксис отмены языка С в строках (например, 'п' представляет перевод строки), вы должны дублировать любые символы ' которые встречаются в строках LIKE. Например, чтобы искать 'п следует указывать *пДля поиска 'V указывайте 'V (обратная косая черта отсекается первый раз анализатором выражений и второй - когда гото­вится шаблон, в результате чего остается только одна обратная косая черта).

  • выражение NOT LIKE шаблон [ESCAPE 'символ-отмены1] Это то же самое, что NOT {выражение LIKE шаблон [ESCAPE ' символ-отмены' ])
  • .
  • выражение NOT REGEXP шаблон выражение NOT RLIKE шаблон Это то же самое, что NOT {выражение REGEXP шаблон).

  • выражение REGEXP шаблон выражение RLIKE шаблон

Выполняет сравнение строкового выражения выражение с шаблоном шаблон. Шаб­лон может быть расширенным регулярным выражением. Синтаксис регулярных выражений рассматривается в приложении А. Возвращает 1, если выражение соот­ветствует шаблон, иначе возвращает 0. Если либо выражение, либо шаблон равны NULL, результатом также будет NULL. RLIKE - это синоним REGEXP, добавленный для достижения совместимости с mSQL. Следует отметить, что поскольку MySQL применяет синтаксис отмены языка С в строках (например, *п' представляет пе­ревод строки), вы должны дублировать любые символы ' которые встречаются в строках REGEXP. Начиная с версии MySQL 3.23A, REGEXP не чувствителен к реги­стру обычных (не бинарных) строк.

mysql> SELECT 'Monty!' REGEXP 'm%y%%!;
-> 0 mysql> SELECT 'Monty!' REGEXP '.*';
-> 1 mysql> SELECT fnew*n*line' REGEXP lnew*.*linel;