如何比较SQL服务器中的Unicode字符?

时间:2010-11-30 22:52:55

标签: regex sql-server-2005 unicode ascii

您好我正在尝试通过执行以下查询来查找我的数据库(SQL Server)中文本中包含字符é的所有行。

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

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

但我发现了两个问题:(a)它们都返回不同的行数;(b)它们返回的行没有指定的字符。

我正在构建正则表达式并比较Unicode正确吗?

编辑:

使用数据类型nvarchar存储问题列。 以下查询给出了正确的结果。

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

2 个答案:

答案 0 :(得分:4)

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

注意:Likepatindex 接受正则表达式。

在SQL Server模式语法中,[\xE9]表示match any single character within the specified set。即匹配\xE9。因此,以下任何字符串都将匹配该模式。

  • “大象”
  • “轴线”
  • “99.9”

答案 1 :(得分:0)