一個(gè)子句,可應(yīng)用于數(shù)據(jù)庫(kù)定義或列定義以定義排序規(guī)則,或應(yīng)用于字符串表達(dá)式以應(yīng)用排序規(guī)則投影。
COLLATE < collation_name >
< collation_name > ::=
{
Windows_collation_name } | { SQL_collation_name }
collation_name
是應(yīng)用于表達(dá)式、列定義或數(shù)據(jù)庫(kù)定義的排序規(guī)則的名稱。collation_name 可以只是指定的 Windows_collation_name 或 SQL_collation_name。
COLLATE 子句可以在幾個(gè)級(jí)別上指定,包括以下級(jí)別:
可以使用 CREATE DATABASE 或 ALTER DATABASE 語(yǔ)句的 COLLATE 子句指定數(shù)據(jù)庫(kù)的默認(rèn)排序規(guī)則。還可在創(chuàng)建數(shù)據(jù)庫(kù)時(shí)使用 SQL Server 企業(yè)管理器指定排序規(guī)則。如果不指定排序規(guī)則,則將為數(shù)據(jù)庫(kù)指派 SQL Server 實(shí)例的默認(rèn)排序規(guī)則。
可以使用 CREATE TABLE 或 ALTER TABLE 語(yǔ)句的 COLLATE 子句指定每個(gè)字符串列的排序規(guī)則。還可在創(chuàng)建表時(shí)使用 SQL Server 企業(yè)管理器指定排序規(guī)則。如果不指定排序規(guī)則,將為列指派數(shù)據(jù)庫(kù)的默認(rèn)排序規(guī)則。
還可使用 COLLATE 子句中的 database_default 選項(xiàng),指定臨時(shí)表中的列使用連接的當(dāng)前用戶數(shù)據(jù)庫(kù)(而不是 tempdb)的默認(rèn)排序規(guī)則。
可以使用 COLLATE 子句將字符表達(dá)式投影到特定的排序規(guī)則。將為字符字面值和變量指派當(dāng)前數(shù)據(jù)庫(kù)的默認(rèn)排序規(guī)則。將為列引用指派列的定義排序規(guī)則。有關(guān)表達(dá)式排序規(guī)則的信息,請(qǐng)參見(jiàn)排序規(guī)則的優(yōu)先順序。
標(biāo)識(shí)符的排序規(guī)則取決于定義標(biāo)識(shí)符時(shí)所在的級(jí)別。為實(shí)例級(jí)對(duì)象(如登錄名和數(shù)據(jù)庫(kù)名)的標(biāo)識(shí)符指派實(shí)例的默認(rèn)排序規(guī)則。為數(shù)據(jù)庫(kù)對(duì)象(如表、視圖和列名)的標(biāo)識(shí)符指派數(shù)據(jù)庫(kù)的默認(rèn)排序規(guī)則。例如,對(duì)于名稱差別僅在于大小寫的兩個(gè)表,可在使用區(qū)分大小寫排序規(guī)則的數(shù)據(jù)庫(kù)中創(chuàng)建,而不能在使用不區(qū)分大小寫排序規(guī)則的數(shù)據(jù)庫(kù)中創(chuàng)建。
當(dāng)連接上下文與數(shù)據(jù)庫(kù)相關(guān)時(shí),可以創(chuàng)建變量、GOTO 標(biāo)簽、臨時(shí)存儲(chǔ)過(guò)程和臨時(shí)表,且當(dāng)已將上下文切換到其它數(shù)據(jù)庫(kù)時(shí)引用它們。變量、GOTO 標(biāo)簽、臨時(shí)存儲(chǔ)過(guò)程和臨時(shí)表的標(biāo)識(shí)符在實(shí)例的默認(rèn)排序規(guī)則中。
COLLATE 子句只能應(yīng)用于 char、varchar、text、nchar、nvarchar 和 ntext 數(shù)據(jù)類型。
排序規(guī)則一般由排序規(guī)則名標(biāo)識(shí)。例外情況是:在安裝過(guò)程中沒(méi)有為 Windows 排序規(guī)則指定排序規(guī)則名稱,而是指定排序規(guī)則指示器,然后選擇復(fù)選框以指定區(qū)分或不區(qū)分大小寫和重音的二進(jìn)制排序或字典排序。
可以執(zhí)行系統(tǒng)函數(shù) fn_helpcollations 以檢索 Windows 排序規(guī)則和 SQL 排序規(guī)則的所有有效排序規(guī)則名稱的列表:
SELECT *
FROM ::fn_helpcollations()
SQL Server 只支持由基礎(chǔ)操作系統(tǒng)支持的代碼頁(yè)。當(dāng)執(zhí)行依賴排序規(guī)則的操作時(shí),被引用對(duì)象所使用的 SQL Server 排序規(guī)則必須使用計(jì)算機(jī)上運(yùn)行的操作系統(tǒng)所支持的代碼頁(yè)。這些操作可包括:
支持 char 和 varchar 數(shù)據(jù)類型的代碼頁(yè)轉(zhuǎn)換,但是不支持 text 數(shù)據(jù)類型的代碼頁(yè)轉(zhuǎn)換。不報(bào)告代碼頁(yè)轉(zhuǎn)換過(guò)程中的數(shù)據(jù)丟失。
如果被引用的對(duì)象所使用或指定的排序規(guī)則使用 Windows® 不支持的代碼頁(yè),則 SQL Server 將發(fā)出錯(cuò)誤信息。有關(guān)更多信息,請(qǐng)參見(jiàn) SQL Server 聯(lián)機(jī)叢書的"SQL Server 構(gòu)架"章中的"排序規(guī)則"節(jié)。
相關(guān)文章