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