You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server XML列搜索报错:'Request'附近语法错误,求协助排查

问题原因与解决方法

你遇到的语法错误,核心原因是字符串中的单引号没有正确转义。在SQL Server的XQuery表达式里,如果你要在单引号包裹的字符串内部使用单引号,必须用两个连续的单引号来表示一个实际的单引号,否则数据库会把中间的单引号当成字符串的结束标记,导致语法解析失败。

修正后的查询语句

SELECT *
FROM [dbo].[HistoryData]
WHERE [Data].exist('//text()[contains(., ''Request viewed'' )]') = 1

关键细节解释

  1. 单引号转义:把原语句里的'Request viewed'改成''Request viewed'',这样数据库才能正确识别这是一个完整的字符串参数,不会因为中间的单引号截断表达式。
  2. 函数大小写规范:虽然SQL Server对T-SQL关键字不区分大小写,但XQuery的函数遵循标准规范要求小写,建议用contains而非大写的CONTAINS,避免潜在的兼容性问题。

可选优化:不区分大小写搜索

如果需要忽略大小写匹配结果,可以结合lower-case()函数统一转换文本后再判断:

SELECT *
FROM [dbo].[HistoryData]
WHERE [Data].exist('//text()[contains(lower-case(.), ''request viewed'' )]') = 1

内容的提问来源于stack exchange,提问作者Anele Ngqandu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:34:48