Spec-Zone.ru › MariaDB

ДВОИЧНЫЙ

На этой странице описан тип данных 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 |
+----------------+--------------------+

См. также

  • CHAR
  • Требования к хранению типов данных
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется заранее компанией MariaDB. Мнения, информация и мнения, выраженные в этом контенте, не обязательно отражают взгляды MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/binary/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API