您好我正在尝试通过执行以下查询来查找我的数据库(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'%é%';
答案 0 :(得分:4)
为什么不使用SELECT COUNT(*) FROM t_question WHERE question LIKE N'%é%'
?
注意:Like
和patindex
不接受正则表达式。
在SQL Server模式语法中,[\xE9]
表示match any single character within the specified set。即匹配\
,x
,E
或9
。因此,以下任何字符串都将匹配该模式。
答案 1 :(得分:0)