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.