每一字符串字符文字有一個字符集和一個校對規則,它不能為空。
一個字符串文字可能有一個可選的字符集引介詞和COLLATE子句:
[_charset_name]'string' [COLLATE collation_name]
例如:
SELECT 'string'; SELECT _latin1'string'; SELECT _latin1'string' COLLATE latin1_danish_ci;
對於簡單的語句SELECT 'string',字符串使用由character_set_connection和collation_connection系統變量定義的字符集和 校對規則。
_charset_name表達式正式稱做一個引介詞。它告訴解析程序,“後面將要出現的字符串使用字符集X。”因為以前人們對此感到困惑,我們強調引介詞不導致任何轉換; 它僅是一個符號,不改變字符串的值。引介詞在標准十六進制字母和數字十六進制符號(x'literal'和 0xnnnn)中是合法的,以及?(當在一個編程語言接口中使用預處理的語句時進行參數替換)。
例如:
SELECT _latin1 x'AABBCC'; SELECT _latin1 0xAABBCC; SELECT _latin1 ?;
MySQL這樣確定一個文字字符集和校對規則:
·如果指定了CHARACTER SET X和COLLATE Y,那麼使用CHARACTER SET X和COLLATE Y。
·如果指定了CHARACTER SET X而沒有指定COLLATE Y,那麼使用CHARACTER SET X和CHARACTER SET X的默認校對規則。
·否則,使用通過character_set_connection 和 collation_connection系統變量給出的字符集和 校對規則。
例如:
·使用latin1字符集和latin1_german1_ci校對規則的字符串:
·SELECT _latin1'Müller' COLLATE latin1_german1_ci;
·使用latin1字符集和其默認校對規則的字符串(即,latin1_swedish_ci):
·SELECT _latin1'Müller';
·使用連接默認字符集和校對規則的字符串:
·SELECT 'Müller';
字符集引介詞和COLLATE子句是根據標准SQL規范實現的。