Sql-Server

我可以為個別語言設置重音不敏感嗎?

  • February 12, 2019

我可以製作這樣的表格/列:

  • 對土耳其語和英語口音敏感。
  • 對阿拉伯語口音不敏感。

實際上,如果這可以在全文索引上完成,那也對我有用。

口音對土耳其語很重要,但對阿拉伯語沒那麼重要。

如果可能的話,我不想為每個表組成單獨的表。

不,這不是排序規則的工作方式。不僅各種敏感性(大小寫、重音、寬度和假名)不是每種語言,而且您甚至不能在每個列或表達式中一次獲得一種以上的語言。問題是多種語言可能共享一個或多個字元。即使您擔心使用的語言具有完全不同的字元(例如阿拉伯語與英語),您一次也只能指定一個語言環境(即使在作業系統級別和其他軟體中——我從未見過任何允許多個語言環境的語言在單個列/實體/對像中)。

我建議選擇最常使用的排序規則作為列的定義方式,然後對於其他一兩個您可以創建計算列,定義為您在此處處理的列 - 但使用適當的排序規則——並在各個列上定義全文索引。例如:

CREATE TABLE #Temp
(
 ID INT,
 Col1 NVARCHAR(50) COLLATE Latin1_General_100_CI_AS_SC,
 Col2 AS [Col1] COLLATE Turkish_100_CI_AS_SC [PERSISTED],
 Col3 AS [Col1] COLLATE Arabic_100_CI_AI_SC [PERSISTED]
);

我不確定全文搜尋是否需要將計算列定義為PERSISTED,因此您可能想嘗試使用和不使用它,不僅可以查看允許的內容,還可以查看性能更好的內容。這種方法至少可以很容易地使值保持同步,因為它們只真正存在於一個地方。

據我所知沒有。一個不是很好但可行的解決方案可能是將標籤拆分為 2 個欄位,一個敏感,一個不敏感……然後根據一個或另一個中的語言搜尋……您可以為每個欄位分配不同的排序規則。

引用自:https://dba.stackexchange.com/questions/170698