Spec-Zone.ru › MySQL 9.2

12.10.8 Набор символов двоичных данных

Набор символов binary — это набор символов для двоичных строк, которые представляют собой последовательности байтов. Набор символов binary имеет один порядок сортировки, также называемый binary. Сравнение и сортировка основаны на числовых значениях байтов, а не на числовых значениях кода символов (которые для многобайтовых символов отличаются от числовых значений байтов). Сведения о различиях между порядком сортировки binary набора символов binary и порядками сортировки _bin наборов символов, отличных от двоичных, см. в Разделе 12.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 разрешен для шестнадцатеричных литералов и литералов значений битов, но не является необходимым; такие литералы по умолчанию являются двоичными строками.

Дополнительные сведения о вводах см. в Разделе 12.3.8, «Вводы наборов символов».

Примечание

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

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

Spec-Zone.ru

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