我在創建數據庫時對de默認排序規則有點困惑。存儲在數據庫中的數據將使用不同的語言。數據庫的主要用戶將使用西班牙語,但它也將用於英語,法語... 由於西班牙語默認排序規則是Modern_Spanish_CI_AS,而英語,法語意大利語......默認爲Latin1_General_CI_AS,因此我希望建議使用哪種排序規則,以及使用排序規則或其他規則時是否存在一些缺陷。多語言數據庫的最佳默認排序規則
非常感謝您的幫助 問候
哈維爾
我在創建數據庫時對de默認排序規則有點困惑。存儲在數據庫中的數據將使用不同的語言。數據庫的主要用戶將使用西班牙語,但它也將用於英語,法語... 由於西班牙語默認排序規則是Modern_Spanish_CI_AS,而英語,法語意大利語......默認爲Latin1_General_CI_AS,因此我希望建議使用哪種排序規則,以及使用排序規則或其他規則時是否存在一些缺陷。多語言數據庫的最佳默認排序規則
非常感謝您的幫助 問候
哈維爾
排序規則有兩個作用:
爲避免第一個問題出現問題,請始終使用nchar/nvarchar數據類型存儲和處理Unicode數據,因爲這樣您就不必擔心整理。它需要更多的磁盤空間,但它避免了一些非常尷尬的問題,所以對於大多數人來說,這可能是一個很好的折衷。
對於第二個問題,請使用對您的數據庫最有意義的排序規則,即哪種排序規則按大多數時候想要執行的方式排序和比較數據?例如,如果您知道區分大小寫的比較很重要,那麼Latin1_General_CS_AS可能是更好的選擇。
而且你可以隨時使用COLLATE明確指定的整理,如果您需要在特定查詢更多的控制:
create table #t (name nvarchar(100))
insert into #t select N'Che'
insert into #t select N'Carlos'
insert into #t select N'Cruz'
select name from #t order by name collate Modern_Spanish_CI_AS
select name from #t order by name collate Traditional_Spanish_CI_AS
drop table #t
如果你不知道文本數據如何排序或比較,如果你的用戶不要也不知道,那麼我會保持你的默認排序規則(並使用Unicode!);在最壞的情況下,您始終可以使用正確的歸類將數據移動到新表格。在聯機叢書中有很多關於排序規則的文檔,您應該仔細閱讀。
忘記提及我們使用的操作系統是西班牙語的窗口,如果校對決定取決於操作系統語言 – javier 2010-09-06 10:21:55