一個字符串文字可能有一個可選的字符集引介詞和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規范實現的。