Spec-Zone.ru › MySQL 5.7

10.10.8 Набор символов двоичного типа

Набор символов binary — это набор символов для двоичных строк, которые представляют собой последовательности байтов. Набор символов binary имеет один порядок сортировки, также называемый binary. Сравнение и сортировка основаны на числовых значениях байтов, а не на числовых значениях кодов символов (которые для многобайтовых символов отличаются от числовых значений байтов). Сведения о различиях между порядком сортировки binary набора символов binary и порядками сортировки _bin наборов символов, отличных от двоичных, см. в разделе 10.8.5, «Порядок сортировки двоичного типа по сравнению с порядками сортировки _bin».

Для набора символов binary понятия регистра символов и эквивалентности акцентов не применяются:

  • Для однобайтовых символов, хранящихся в виде двоичных строк, границы символов и байтов совпадают, поэтому различия в регистре и акцентах имеют значение при сравнении. То есть, порядок сортировки binary чувствителен к регистру и акцентам.

    mysql> SET NAMES 'binary';
    mysql> SELECT CHARSET('abc'), COLLATION('abc');
    +----------------+------------------+
    | CHARSET('abc') | COLLATION('abc') |
    +----------------+------------------+
    | binary         | binary           |
    +----------------+------------------+
    mysql> SELECT 'abc' = 'ABC', 'a' = 'ä';
    +---------------+------------+
    | 'abc' = 'ABC' | 'a' = 'ä'  |
    +---------------+------------+
    |             0 |          0 |
    +---------------+------------+
    
  • Для многобайтовых символов, хранящихся в виде двоичных строк, границы символов и байтов различаются. Границы символов теряются, поэтому сравнения, зависящие от них, не имеют смысла.

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

mysql> SET @str = BINARY 'New York';
mysql> SELECT LOWER(@str), LOWER(CONVERT(@str USING utf8mb4));
+-------------+------------------------------------+
| LOWER(@str) | LOWER(CONVERT(@str USING utf8mb4)) |
+-------------+------------------------------------+
| New York    | new york                           |
+-------------+------------------------------------+

Для преобразования строкового выражения в двоичную строку, эти конструкции эквивалентны:

BINARY expr
CAST(expr AS BINARY)
CONVERT(expr USING BINARY)

Если значение является строковым литералом, можно использовать вводящий символ _binary, чтобы обозначить его как двоичную строку. Например:

_binary 'a'

Вводящий символ _binary разрешен для шестнадцатеричных литералов и литералов значений битов, но не является необходимым; такие литералы по умолчанию являются двоичными строками.

Дополнительную информацию о вводящих символах см. в разделе 10.3.8, «Вводящие символы наборов символов».

Примечание

В клиенте mysql двоичные строки отображаются в шестнадцатеричном формате, в зависимости от значения --binary-as-hex. Дополнительную информацию об этой опции см. в разделе 4.5.1, «mysql — Клиент командной строки MySQL».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/charset-binary-set.html

Spec-Zone.ru

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