top
Loading...
10.3.7.字符串文字字符集和校對
10.3.7. 字符串文字字符集和校對
每一字符串字符文字有一個字符集和一個校對規則,它不能為空。

一個字符串文字可能有一個可選的字符集引介詞和COLLATE子句:

[_charset_name]'string' [COLLATE collation_name]

例如:

SELECT 'string';
SELECT _latin1'string';
SELECT _latin1'string' COLLATE latin1_danish_ci;

對于簡單的語句SELECT 'string',字符串使用由character_set_connectioncollation_connection系統變量定義的字符集和 校對規則。

_charset_name表達式正式稱做一個引介詞。它告訴解析程序,“后面將要出現的字符串使用字符集X”因為以前人們對此感到困惑,我們強調引介詞不導致任何轉換; 它僅是一個符號,不改變字符串的值。引介詞在標準十六進制字母和數字十六進制符號(x'literal'0xnnnn)中是合法的,以及(當在一個編程語言接口中使用預處理的語句時進行參數替換)。

例如:

SELECT _latin1 x'AABBCC';
SELECT _latin1 0xAABBCC;
SELECT _latin1 ?;

MySQL這樣確定一個文字字符集和校對規則:

·         如果指定了CHARACTER SET XCOLLATE Y,那么使用CHARACTER SET XCOLLATE Y

·         如果指定了CHARACTER SET X而沒有指定COLLATE Y,那么使用CHARACTER SET XCHARACTER 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規范實現的。

作者:mysql.com
來源:http://dev.mysql.com/doc/refman/5.1/zh/charset.html
北斗有巢氏 有巢氏北斗