2010-11-30 36 views
1

嗨我想通過執行以下查詢來查找我的數據庫(SQL Server)中的所有行,其中的字符é在他們的文本中。如何比較SQL Server中的Unicode字符?

SELECT COUNT(*) FROM t_question WHERE patindex(N'%[\xE9]%',question) > 0; 

SELECT COUNT(*) FROM t_question WHERE patindex(N'%[\u00E9]%',question) > 0; 

但我發現了兩個問題:(1)他們兩人正在返回不同的行數和(b)他們正在返回其不具有指定字符的行。

是我構建正則表達式和比較Unicode正確的方式嗎?

編輯:

問題柱是使用數據類型nvarchar存儲。 以下查詢給出了正確的結果。

SELECT COUNT(*) FROM t_question WHERE question LIKE N'%é%'; 

回答

4

爲什麼不使用SELECT COUNT(*) FROM t_question WHERE question LIKE N'%é%'

注意:Likepatindex接受正則表達式。

在SQL Server模式語法[\xE9]表示match any single character within the specified set。即匹配\,x,E9。所以以下任何一個字符串都會匹配該模式。

  • 「大象」
  • 「軸線」
  • 「99.9」
+0

因此,第一個與\,0,0,E或9匹配?有沒有一種方法可以在查詢中真正指定unicode? – rkg 2010-11-30 23:08:52