當我發出了一個SQL查詢,有時我會收到以下錯誤信息:排序規則衝突的SQL Server
無法解析「Latin1_General_CI_AS」,並在相同的操作規則「SQL_Latin1_General_CP1_CI_AS」之間的排序規則衝突。
我經常解決這個問題,只是使兩個表的排序規則相同。所以我需要知道是否有任何快速的方法來解決這個問題。
我想把一些特別的東西在我的SQL查詢作爲結果如果排序規則不同,這兩個表中的sql查詢然後也查詢將完美無缺地工作。有沒有解決方法?
當我發出了一個SQL查詢,有時我會收到以下錯誤信息:排序規則衝突的SQL Server
無法解析「Latin1_General_CI_AS」,並在相同的操作規則「SQL_Latin1_General_CP1_CI_AS」之間的排序規則衝突。
我經常解決這個問題,只是使兩個表的排序規則相同。所以我需要知道是否有任何快速的方法來解決這個問題。
我想把一些特別的東西在我的SQL查詢作爲結果如果排序規則不同,這兩個表中的sql查詢然後也查詢將完美無缺地工作。有沒有解決方法?
您可以通過使用COLLATE條款迫使其歸類。兩個數據庫或服務器之間的連接表時,特別是如果DB的版本不同
即
SELECT *
FROM Table1 T1
INNER JOIN Server2.dbo.Table2 T2
ON T1.Name = T2.Name COLLATE database_default
整理衝突是常見的。
您可以在查詢中使用collate clause指定歸類:
where col1 = col2 collate Latin1_General_CI_AS
可能有兩種服務器使用不同的排序規則。如果是,那麼你會得到一個類似於我在本主題頂部提到的錯誤。你應該在這種情況下做什麼?
您可以更改的任何表列/字段的默認排序規則,但是這可能對目前正與變更的表使用其他表產生連鎖反應。
使用COLLATE DATABASE_DEFAULT關鍵字同時匹配列/字段
,如:
SELECT T1.EmployeeName, T2.DeptName
FROM ServerA.dbo.EmpTab T1
JOIN ServerB.dbo.DeptTab T2
ON T1.DeptCode COLLATE DATABASE_DEFAULT
= T2.DeptCode COLLATE DATABASE_DEFAULT
請在您的文章正確的格式。 – 2016-10-21 05:34:43