2010-11-30 42 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