MySQL / 4. Работа со строками

Проверка равенства и взаимного порядка строк

Задача
Вы хотите проверить строки на равенство или узнать, какая из них является первой лексически.

Решение
Используйте оператор сравнения.

Обсуждение
К строкам можно применять обычные операторы проверки на равенство и неравенство:

mysql> SELECT name, name = 'lead', name != 'lead' FROM metal;

+------------ + -----------------+------------------ +
| name        | name = 'lead'  | name != 'lead' |
+ ------------+----------------- +------------------ +
| copper      |                     0 |                      1 |
| gold          |                     0 |                      1 |
| iron           |                     0 |                      1 |
| lead          |                     1 |                      0 |
| mercury    |                     0 |                      1 |
| platinum   |                     0 |                      1 |
| silver        |                      0 |                     1 |
| tin            |                      0 |                      1 |
+ -----------+ ------------------+------------------ +

Также можно использовать операторы сравнения, такие как <, <=, >= и >, для проверки лексического порядка строк:

mysql> SELECT name, name < 'lead', name > 'lead' FROM metal;

+---------- +----------------- +---------------- +
| name      | name < 'lead' | name > 'lead' |
+---------- + -----------------+ ----------------+
| copper   |                     1 |                    0 |
| gold       |                     1 |                    0 |
| iron        |                     1 |                    0 |
| lead        |                    0 |                    0 |
| mercury  |                    0 |                    1 |
| platinum |                     0 |                    1 |
| silver      |                     0 |                    1 |
| tin          |                     0 |                    1 |
+---------- +----------------- +---------------- +

Для того чтобы определить, попадает ли строка в определенный диапазон значений, можно использовать два сравнения:  

mysql> SELECT name, 'iron' <= name AND name <= 'platinum' FROM metal;

+----------- +------------------------------------------------ +
| name       | 'iron' <= name AND name <= 'platinum' |
+----------- + ------------------------------------------------+
| copper     |                                                              0 |
| gold         |                                                              0 |
| iron         |                                                              1 |
| lead         |                                                              1 |
| mercury  |                                                               1 |
| platinum  |                                                              1 |
| silver       |                                                              0 |
| tin           |                                                              0 |
+ -----------+----------------------------------------------- +

Для проверки вхождения в диапазон можно использовать и оператор BETWEEN. Следующий запрос аналогичен предыдущему:

SELECT name, name BETWEEN 'iron' AND 'platinum' FROM metal;

Статьи по MySQL на эту тему:

FULLTEXT поиск и короткие слова
Буквальная интерпретация метасимволов в шаблонах
Включение и исключение слов из FULLTEXT - поиска
Поиск по образцу с помощью регулярных выражений
Поиск по образцу с помощью шаблонов SQL

Вернуться в раздел: MySQL / 4. Работа со строками