SQL Server中CASE语句含单引号的字符串条件无法识别如何解决
SQL Server字符串内嵌单引号转义方法
SQL Server的T-SQL语法中,字符串字面量内部的单引号必须通过双写单引号的方式转义:两个连续的半角单引号会被解析器识别为字符串内容里的普通单引号字符,不会被判定为字符串的结束边界,无需删除原有单引号即可实现完整字符串匹配。
修正后的CASE表达式代码
原代码出错的核心原因是Reduced to Warning Notice后的单引号被识别为字符串终止符,只需要把这个作为内容的单引号双写即可,修正后的分支代码如下:
WHEN [Group] = 'Representation Accepted' AND [Reason] = 'Reduced to Warning Notice'' Area Authorised' THEN 31
补充说明
- 所有出现在字符串边界内部、需要作为实际内容匹配的单引号,都要替换为两个连续的半角单引号。例如要匹配内容
O'Neil,对应的字面量写法为'O''Neil' - 该写法是T-SQL的原生标准语法,在SSMS中可以直接正常解析执行,不会修改表中存储的原始数据,也不会改变待匹配的目标字符串内容
- 不要用全角单引号代替半角单引号做转义,否则会出现匹配不到预期数据的问题
内容的提问来源于stack exchange,提问作者user19129062
相关产品推荐
相关产品推荐

