2009-11-09 53 views
1

我需要本地化SQL Server 2008數據庫中表中的數據。選擇記錄時,每種語言都需要自己的排序順序。我在另一個線程中被告知,爲每種語言創建單獨的表將使幾乎不可能在存儲過程中創建select語句。返回文化的記錄。但是,如果我將每種語言的所有數據放在一個單獨的表中並且行數不同,我該如何允許不同的排序順序?我不會爲每種語言分隔列,而是多行。用於提取記錄的select語句是否具有與其關聯的排序順序,還是必須爲表或列存儲?本地化SQL Server 2008表中的數據和排序

+0

縮進和表格聲明請。 – 2009-11-09 17:15:26

回答

2

我建議你創建一個名爲ie的額外列的本地化表。將存儲語言的Locale。由於所有數據都將始終包含在同一列中,將不會有任何需要不同的排序順序(除非用戶實際需要的數據或遞增/遞減順序不同...總之:

樣品表:

ID | Name | Description | Locale 
-------------------------------- 
1 Me  This is me en 
2 Ich Das bin ich de 
3 You This is you en 
4 Du  Das bist du de 
.... 

你的排序順序將保持不變。所有你獲得一個額外的where條款

select ID, 
     [Name], 
     Description 
from SampleTable 
where Locale = 'en' 
order by [Name] 

爲了讓事情更好,我會用文化語言環境abreviations創建查找表正常化這些表,其他表格(就像這樣我創建的)將由外鍵使用。

+0

但在西班牙語中,整理與英語不同。我需要不同的分頁設置,因此按順序將返回文檔順序中的行。 – user31673 2009-11-09 17:57:45

+0

那麼如果你將排序規則設置爲Accent敏感,它將適用於英語,不是嗎?我通常使用斯洛文尼亞_CI_AS它工作沒有概率。 – 2009-11-09 18:43:34

1

要做的第一件事是添加一列以確定該行所屬的文化。之後,對該列進行過濾簡單。

Select * from myTable where Culture=1003 

您也可以考慮將視圖添加到該表中。從那裏你可以添加索引和排序到你的心中的內容。