5

Sql-Server 2008 R2排序規則爲​​。 當我使用兩個字符串使用'='進行比較相等,但'失敗'比較

select 1 where N'⑦' = N'7' 

它輸出1,但是當我改變運營商like

select 1 where N'⑦' like N'7' 

它不會輸出任何東西。

爲什麼like運算符表現得很奇怪?我錯過了什麼?

+0

'N'⑦'與N'7%''和'N'7''N'ır%''都返回結果。在Connect上報告。對我來說,這似乎不像預期的行爲。 – 2012-07-11 06:29:51

+0

以下鏈接可能會對您有所幫助。看起來像一個已知的問題https://connect.microsoft.com/SQLServer/feedback/details/703959/search-with-like-not-working-as-expected-with-collat​​ion-slovenian-100-ci-as – PraveenVenu 2012-07-11 06:09:39

+0

Don看不出連接問題是如何相關的(除了是LIKE的另一個問題) – 2012-07-11 06:16:19

回答

1

這似乎是一個錯誤。 LIKE針對沒有通配符的模式應始終返回=返回的相同內容。

其他可以通過運行下面的查詢看到此行爲:

SELECT 
    CASE WHEN N'⑦' COLLATE Chinese_Simplified_Pinyin_100_CI_AS = N'7' THEN 'Y' ELSE 'N' END, 
    CASE WHEN N'⑦' COLLATE Chinese_Simplified_Pinyin_100_CI_AS LIKE N'7' THEN 'Y' ELSE 'N' END 
-- Y N 

我看到你reported it on Microsoft Connect