content_image/809622.jpg
default. To explicitly specify binary string context for such literals, use a _binary  introducer for at least one of the arguments: 

mysql> SET @v1 = X’000D’ | X’0BC0’; mysql> SET @v2 = _binary X’000D’ | X’0BC0’; mysql> SELECT HEX(@v1), HEX(@v2); 

<img src='content_image/809622.jpg'>

The displayed result appears similar for both bit operations, but the result without _binary  is a BIGINT value, whereas the result with _binary  is a binary string. Due to the difference in result types, the displayed values differ: High-order 0 digits are not displayed for the numeric result. 

MySQL determines the character set and collation of a character string literal, hexadecimal literal, or bit- value literal in the following manner: 

•If both _charset_name  and COLLATE collation_name  are specified, character set charset_name and collation collation_name  are used. collation_name  must be a permitted collation for charset_name . 

•If _charset_name  is specified but COLLATE  is not specified, character set charset_name  and its default collation are used. To see the default collation for each character set, use the SHOW CHARACTER SET  statement or query the INFORMATION_SCHEMA CHARACTER_SETS  table. 

•If _charset_name  is not specified but COLLATE collation_name  is specified: 

•For a character string literal, the connection default character set given by the character_set_connection  system variable and collation collation_name  are used. collation_name  must be a permitted collation for the connection default character set. 

•For a hexadecimal literal or bit-value literal, the only permitted collation is binary  because these types of literals are binary strings by default. 

•Otherwise (neither _charset_name  nor COLLATE collation_name  is specified): 

•For a character string literal, the connection default character set and collation given by the character_set_connection  and collation_connection  system variables are used. 

•For a hexadecimal literal or bit-value literal, the character set and collation are binary . 

Examples: 

•Nonbinary strings with latin1  character set and latin1_german1_ci  collation: 

SELECT _latin1’Müller’ COLLATE latin1_german1_ci; SELECT _latin1 X’0A0D’ COLLATE latin1_german1_ci; SELECT _latin1 b’0110’ COLLATE latin1_german1_ci; 

•Nonbinary strings with utf8mb4  character set and its default collation (that is, utf8mb4_0900_ai_ci ): 

SELECT _utf8mb4’Müller’; SELECT _utf8mb4 X’0A0D’; SELECT _utf8mb4 b’0110’; 

•Binary strings with binary  character set and its default collation (that is, binary ): 

SELECT _binary’Müller’; SELECT X’0A0D’; 

