Опубликован: 16.01.2007 | Уровень: для всех | Доступ: свободно
Лекция 10:

Работа со строками

< Лекция 9 || Лекция 10: 1234 || Лекция 11 >

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

Обычно если любое выражение в сравнении строк чувствительно к регистру, то сравнение также чувствительно к регистру.

выражение LIKE шаблон [ESCAPE 'символ-отмены']

Проверка на соответствие шаблону, заданному простыми регулярными выражениями SQL. Возвращает 1 ( TRUE ) или 0 ( FALSE ). Если выражение или шаблон равны NULL, возвращает NULL.

В шаблонах LIKE можно использовать следующие два символа:

"%" – соответствие любому числу символов, включая нуль символов.

"_" – соответствие любому одному символу.

mysql> SELECT 'David!' LIKE 'David_';
    -> 1

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

Если требуется исследовать строку на вхождения в неё шаблонных символов (% или _), то шаблонный символ следует предварить экранирующим символом (ESCAPE). Если экранирующий символ не указан явно, то по умолчанию им считается символ '\':

"\%" – соответствует одному символу '%'

"\_" – соответствует одному символу '_'

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> SELECT 10 LIKE '1%';
    -> 1

expr REGEXP pat

expr RLIKE pat

Выполняет сравнение строкового выражения expr с шаблоном pat. Шаблон может представлять собой расширенное регулярное выражение. Возвращает 1, если expr соответствует pat, в противном случае - 0.

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

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
< Лекция 9 || Лекция 10: 1234 || Лекция 11 >
Александра Каева
Александра Каева
Диляра Кенжебай
Диляра Кенжебай