SQL Server 2008 R2执行含双AND的SELECT语句报错求助
SQL Server 2008 R2 语法错误排查与解决
问题场景
同一段SELECT语句在SQL Server 2018及以上版本可正常执行,但在SQL Server 2008 R2(v10.5)中抛出语法错误。移除第二个AND条件后能正常运行,但业务逻辑要求保留该条件。
执行的SQL语句
SELECT SUM(Amount) AS "KrediKartı" FROM [SAMBA4].[dbo].[Payments] WHERE Date BETWEEN '2022-10-29 03:00:00.000' AND '2022-10-30 03:00:00.617' AND PaymentTypeId = 2
报错信息
Msg 102, Level 15, State 1, Line 1
语法错误 near ' '
问题原因
错误提示中的' '是全角空格(非ASCII标准空格字符)。SQL Server 2008 R2对这类特殊空白字符的解析兼容性较差,而新版本SQL Server优化了特殊字符处理逻辑,因此不会触发错误。这种特殊空格通常是复制粘贴时带入,或是输入时误切换成全角模式导致的。
解决方案
- 替换特殊空格:将第二个
AND前后的所有空白字符替换为标准半角空格(ASCII 32) - 重新输入条件行:手动敲写
AND PaymentTypeId = 2整行,彻底避免特殊字符残留 - 编辑器批量处理:用文本编辑器的"查找替换"功能,将所有非标准空白字符替换为正常空格
修改后重新执行语句,即可同时满足语法要求和业务条件。
内容的提问来源于stack exchange,提问作者Onur UZEL
相关产品推荐
相关产品推荐

