Sql-Server-2008

MS SQL Server 2008 R2 中捷克語排序規則 Czech_CI_AI 的問題

  • December 10, 2020

我在捷克語中對口音不敏感的搜尋有以下問題。我的數據庫設置為Czech_CI_AI排序規則。對於某些變音符號系統可以正常工作(即。I),但對於某些不正確(即。R)。在我的數據庫中有幾條'DVORA*'記錄:

SELECT contact_name 
FROM   CONTCTSM1 
WHERE  CONTACT_NAME LIKE 'DVO%' 

結果:

DVOŘÁČKOVÁ,

IVETA DVOŘÁČKOVÁ,

JIŘINA DVOŘÁK

R 和 Ř 是不同的字母,而不是修飾的基本字母(?),例如帶有 ö 和 o 的德語變音符號

來自維基百科上的捷克語(我的粗體字)

重音 (čárka) 字母(Á、É、Í、Ó、Ú、Ý)和 kroužek 字母 Ů 都表示長元音。它們與非變音符號對應的字母順序相同。… háček (ˇ) 表示基本字母的歷史顎化。字母 Č、Ř、Š 和 Ž 目前代表齒槽後輔音,並在其相應的基礎字母**后面排序;**而 Ď, Ň, Ť 代表硬音輔音,並且與非變音符號對應的字母順序相同。

用瑞典語(不同字母)和德語(修改)的 Ö 和 O 測試

SELECT 'Finnish_Swedish_100_CI_AI' 
         WHERE N'Ö' COLLATE Finnish_Swedish_100_CI_AI = N'O'
UNION ALL
SELECT 'Latin1_General_CI_AI' 
         WHERE N'Ö' COLLATE Latin1_General_CI_AI = N'O'

好吧,這一切都很好,很花哨,但是雖然在排序時 R 和 Ř 應該被區別對待,但在比較“不敏感的重音”時它們應該被認為是相同的。Dvořák 應該排在 Dvorak 之後,甚至“dobře” 排在“dobrý”之後,在搜尋“Dvorak”時忽略重音,找不到“Dvořák”是沒有意義的。事實上,對口音不敏感的捷克排序規則比無用更糟糕。

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