訊息 468,層級 16,狀態 9,行 1
無法解析 equal to 作業中 "Latin1_General_CI_AI" 與 "Chinese_Taiwan_Stroke_CI_AS" 之間的定序衝突。
以下是在 SQL Server 2005 所引發錯誤的 SQL 查詢範例:
select * from sysobjects o
left join ::fn_Listextendedproperty(null, N'user',N'dbo',N'table', default, null, null) e on o.name = e.objname
where type = 'U'
當你在定序為 Chinese_Taiwan_Stroke_CI_AS 的資料庫,使用 fn_Listextendedproperty 函式與 sysobjects 資料表合併查詢時,就會發生定序衝突(Collation Conflict)的錯誤。這是因為 fn_Listextendedproperty 函式回傳的資料固定是以 Latin1_General_CI_AI 為定序,所以導致定序不一致的情況。
上例的解決作法就是在運算式中,做明確的字串定序轉換,如以下範例:
select * from sysobjects o
left join ::fn_Listextendedproperty(null, N'user',N'dbo',N'table', default, null, null) e on o.name = e.objname COLLATE Chinese_Taiwan_Stroke_CI_AS
where type = 'U'
你也可以利用 COLLATE 子句中的 database_default 選項,指定特定的資料行使用目前連接的使用者資料庫之定序預設值。
你上下2個範例語法都一模一樣
匿名
2012年7月31日 下午5:59