[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Every character string literal has a character set and a collation, which may not be null.
A character string literal may have an optional character set
introducer and COLLATE
clause:
[_character_set_name]'string' [COLLATE collation_name] |
Examples:
SELECT 'string'; SELECT _latin1'string'; SELECT _latin1'string' COLLATE latin1_danish_ci; |
The simple statement SELECT 'string'
uses the
connection/literal character set.
The _character_set_name
expression is formally called
an introducer. It tells the parser,
"the string that is about to follow is in character set X
."
Because this has confused people in the past, we emphasize
that an introducer does not cause any conversion, it is strictly a
signal that does not change the string's value. An introducer is
also legal before standard hex literal and numeric hex literal notation
(x'literal'
and 0xnnnn
), and before ?
(parameter
substitution when using prepared statements within a programming language
interface).
Examples:
SELECT _latin1 x'AABBCC'; SELECT _latin1 0xAABBCC; SELECT _latin1 ?; |
MySQL determines a literal's character set and collation thus:
_X
and COLLATE Y
were specified then the literal
character set is X
and the literal collation is Y
_X
is specified but COLLATE
is not specified, then the
literal character set is X
and the literal collation is X
's default
collation
Examples:
latin1
character set and latin1_german1_ci
collation:
SELECT _latin1'M@"uller' COLLATE latin1_german1_ci; |
latin1
character set and its default collation, that is,
latin1_swedish_ci
:
SELECT _latin1'M@"uller'; |
SELECT 'M@"uller'; |
Character set introducers and the COLLATE
clause are implemented
according to standard-SQL specifications.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |