ДВОИЧНЫЙ
На этой странице описан тип данных BINARY. Подробности об операторе см. в разделе Оператор двоичных данных.
Синтаксис
BINARY(M)
Описание
Тип BINARY похож на тип CHAR, но хранит двоичные байтовые строки, а не недвоичные строковые данные. M представляет длину столбца в байтах.
Он не содержит кодовой страницы, а сравнение и сортировка основаны на числовом значении байтов.
Если предельная длина превышена, и строгий режим SQL не включен, дополнительные символы будут удалены с предупреждением. Если строгий режим включен, произойдет ошибка.
Значения BINARY при вставке дополняются справа 0x00 (нулевым байтом) до указанной длины. При выборке заполнение не удаляется, поэтому это нужно учитывать при сортировке и сравнении, где все байты важны. Нулевой байт, 0x00 меньше пробела для целей сравнения.
Примеры
Вставка слишком большого количества символов, сначала без строгого режима, затем со включенным режимом:
CREATE TABLE bins (a BINARY(10));
INSERT INTO bins VALUES('12345678901');
Query OK, 1 row affected, 1 warning (0.04 sec)
SELECT * FROM bins;
+------------+
| a |
+------------+
| 1234567890 |
+------------+
SET sql_mode='STRICT_ALL_TABLES';
INSERT INTO bins VALUES('12345678901');
ERROR 1406 (22001): Data too long for column 'a' at row 1
Сортировка выполняется по значению байта:
TRUNCATE bins;
INSERT INTO bins VALUES('A'),('B'),('a'),('b');
SELECT * FROM bins ORDER BY a;
+------+
| a |
+------+
| A |
| B |
| a |
| b |
+------+
Использование CAST для сортировки как CHAR вместо этого:
SELECT * FROM bins ORDER BY CAST(a AS CHAR); +------+ | a | +------+ | a | | A | | b | | B | +------+
Поле является BINARY(10), поэтому вставляется заполнение из двух '\0', что приводит к сбоям сравнений, которые это не учитывают:
TRUNCATE bins;
INSERT INTO bins VALUES('12345678');
SELECT a = '12345678', a = '12345678\0\0' from bins;
+----------------+--------------------+
| a = '12345678' | a = '12345678\0\0' |
+----------------+--------------------+
| 0 | 1 |
+----------------+--------------------+
См. также
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/binary/