130
Глава 7.
Создание, преобразование и работа с данными
mysql>
INSERT INTO string_tbl(vchar_fld) VALUES ('qrstuv');
Query OK, 1 row affected (0.00 sec)
mysql>
INSERT INTO string_tbl(vchar_fld) VALUES ('12345');
Query OK, 1 row affected (0.00 sec)
Вот эти пять строк в порядке сортировки:
mysql>
SELECT vchar_fld
> FROM string_tbl
> ORDER BY vchar_fld;
++
| vchar_fld |
++
| 12345 |
| abcd |
| QRSTUV |
| qrstuv |
| xyz |
++
5 rows in set (0.00 sec)
Следующий запрос проводит шесть сравнений пяти разных строк:
mysql>
SELECT STRCMP('12345','12345') 12345_12345,
> STRCMP('abcd','xyz') abcd_xyz,
> STRCMP('abcd','QRSTUV') abcd_QRSTUV,
> STRCMP('qrstuv','QRSTUV') qrstuv_QRSTUV,
> STRCMP('12345','xyz') 12345_xyz,
> STRCMP('xyz','qrstuv') xyz_qrstuv;
+++++++
| 12345_12345 | abcd_xyz | abcd_QRSTUV | qrstuv_QRSTUV | 12345_xyz | xyz_qrstuv |
+++++++
| 0 | 1 | 1 | 0 | 1 | 1 |
+++++++
1 row in set (0.00 sec)
В результате первого сравнения получаем вполне ожидаемое значение
0
, поскольку строка сравнивалась сама с собой.
Четвертое сравнение
также дает
0
, что немного неожиданно, поскольку строки состоят из
одних и
тех же букв, но в одной строке все буквы в верхнем регистре,
а в другой – в нижнем. Причиной такого результата является то, что
функция
strcmp()
MySQL не чувствительна к регистру, о
чем надо пом
нить при ее использовании. Остальные четыре сравнения дают или
1
,
или
1
в зависимости от порядка расположения строк в порядке сорти
ровки.
Например,
strcmp('abcd','xyz')
дает
1
, поскольку строка
'abcd'
идет перед строкой
'xyz'
.
Наряду с
функцией
strcmp()
MySQL позволяет использовать в блоке
select
операторы
like
и
regexp
для сравнения строк. Результатом таких
сравнений
будет
1
(для
true
) и
0
(для
false
). Следовательно, эти опера
торы
позволяют создавать выражения, возвращающие число, подобно
функциям, описанным в этом разделе.
Вот пример использования опе
ратора
like
: