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

SQL语法错误求助:Incorrect syntax near ''问题排查

SQL代码语法错误排查:Incorrect syntax near '' 问题分析

这段动态拼接的SQL代码执行时触发语法错误,报错信息如下:

Msg 102, Level 15, State 1, Line 59
Incorrect syntax near ''.

错误出自以下代码片段:

AND ('''+@searchText+''' = '''' OR (ISNULL(CAST(t1.id as varchar(10)),'''') + '' '' +
                                    ISNULL(CAST(FORMAT(t1.reading_date,@dateformat) as varchar(12)),'''')+'' '' +
                                    ISNULL(t2.description,'''') + '' '' +
                                    ISNULL(t3.equipment_no,'''') + '' '' +
                                    ISNULL(t4.description,'''') + '' '' + 
                                    ISNULL(CAST(t1.actual_usage as nvarchar(16)),'''') + '' '' +
                                    ISNULL(t5.uom_code,'''') + '' '' +
                                    ISNULL(CAST(t1.actual_cost as nvarchar(16)),'''') + '' '' +
                                    ISNULL(t6.currency_code,'''') + '' '' +
                                    ISNULL(t1.comment,'''') + '' '' +
                                    ISNULL(CAST(FORMAT(t1.actual_date,@dateformat) as varchar(12)),'''')) LIKE ''%'' '''+@searchText+''' ''%'')

问题原因

  1. LIKE条件的字符串拼接错误:
    原代码中LIKE部分写为 ''%'' '''+@searchText+''' ''%'',动态拼接后会生成类似 '%' '搜索内容' '%' 的语句——三个独立字符串直接相邻,SQL无法识别这种写法,导致语法报错。
  2. 引号转义逻辑混乱:
    单引号组合方式错误,没有将搜索关键词与通配符%正确拼接成一个完整的匹配字符串。

修正方案

调整LIKE条件的拼接逻辑,将通配符和@searchText合并为一个字符串,修正后的代码如下:

AND ('''+@searchText+''' = '''' OR (ISNULL(CAST(t1.id as varchar(10)),'''') + '' '' +
                                    ISNULL(CAST(FORMAT(t1.reading_date,@dateformat) as varchar(12)),'''')+'' '' +
                                    ISNULL(t2.description,'''') + '' '' +
                                    ISNULL(t3.equipment_no,'''') + '' '' +
                                    ISNULL(t4.description,'''') + '' '' + 
                                    ISNULL(CAST(t1.actual_usage as nvarchar(16)),'''') + '' '' +
                                    ISNULL(t5.uom_code,'''') + '' '' +
                                    ISNULL(CAST(t1.actual_cost as nvarchar(16)),'''') + '' '' +
                                    ISNULL(t6.currency_code,'''') + '' '' +
                                    ISNULL(t1.comment,'''') + '' '' +
                                    ISNULL(CAST(FORMAT(t1.actual_date,@dateformat) as varchar(12)),'''')) LIKE ''%'+@searchText+'%'')

关键修正点

  • 将原LIKE部分的 ''%'' '''+@searchText+''' ''%'' 修改为 ''%'+@searchText+'%'',确保拼接后生成合法的匹配字符串 '%搜索内容%',避免无连接符的字符串相邻问题。
  • 确认所有单引号转义正确,保证动态SQL生成后引号完全闭合,无语法遗漏。

内容的提问来源于stack exchange,提问作者Shehan Silva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 01:39:18