2012-01-25 85 views
6

我有當主角是一樣的:第一,不返回結果的SQL服務器上的一個簡單的查詢功能...簡單的像在SQL Server查詢返回沒有結果

數據庫故事包含的行現場「姓」和值「奧勒鬆」

select * 
from table 
where LastName like 'A%' -- returns no results 

如果我更改了「姓氏」字段包含「奧勒鬆」完全相同的查詢返回正確的行。

任何想法?

斯蒂格

+1

您確定'奧勒鬆'沒有領先的空間嗎? – 2012-01-25 13:52:19

+1

鑑於你來自奧斯陸,我會懷疑一個有趣的A,比如À,Á,Ä,Å或Å – Andomar

+1

是不是像http://en.wikipedia.org/wiki/%C3% 85? –

回答

10

在SQL Server的丹麥/挪威整理,「AA」被認爲是一個「代名詞」的一個,因爲這是信是如何1940es之前寫在丹麥。這也意味着在分類時,「aa」被認爲是字母表的最後一個字母。

我不知道這種行爲在挪威語環境中是否有意義,但我認爲Sql server 2012中的排序規則被拆分爲兩個,也許可以修復它。

更新:根據維基百科,在挪威使用「Aa」作爲「Å」與丹麥語的使用類似:「Aa」已被幾十年來官方組織標準化語言廢除,但一些城鎮拒絕由於歷史原因改變他們的名字,並且「Aa」在姓氏中也是常見的。

基於此,我認爲在搜索LIKE「A%」時未能找到「Aalesund」是挪威本地化應用程序中最正確的行爲。如果您不使用丹麥/挪威的排序規則來改變這種情況,您應該意識到它會改變其他屬性,如上面提到的特殊字母排序。

許多不同的排序規則名爲Danish_Norwegian _...不會幫助你AFAIK。他們詳細說明了對案件,口音,字符寬度和假名類型的敏感度(後者僅與日語相關,我相信)。 「Å」不被視爲重音「A」,而是一個明確的字母。對排序規則的命名約定的描述在this MSDN article中。

更新2:令人驚訝的是,似乎排序規則Norwegian_100_CI_AI做你想要的。也許丹麥和挪威的用法畢竟不同......

+0

儘管如此,仍然有些不明。爲什麼'Aa'與'Alesund'中的'A'匹配,而不是'A%'? –

+0

這聽起來像可能是問題所在。我可以改爲支持挪威人物的什麼樣的整理?所有不同的丹麥 - 挪威選項有什麼區別? (這不是我的域:)) – Kulvis

+0

@MartinSmith我讀到這個問題的方式,「A%」匹配「Alesund」,但不匹配「Aalesund」。由於「奧勒鬆」真的是「奧勒鬆」,這是我期望的行爲(作爲丹麥語演講者)。 –

1

這名字有時拼寫爲「奧勒鬆」在一個小圓圈是在一些字體非常小。當您嘗試使用全名查詢時,您可能會無意中複製/粘貼「奧勒鬆」。嘗試

select * from table where LastName like 'Å%'