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

Node.js服务SQL Server查询报错:无效列名%@param4%求解决建议

解决SQL Server查询“无效列名”报错问题

报错原因

你使用的mssql库模板字符串查询会自动对${}包裹的内容做参数化处理,当你写"%${input}%"时,库无法正确识别这是要给参数添加通配符,反而将%@param4%错误解析成了列名,因此抛出“Invalid column name '%@param4%'”的报错。

解决方法

方法1:提前给参数添加通配符

先将输入内容拼接上%,再传入查询语句:

async function searchBook(input){
    const inputWithWildcard = `%${input}%`;
    let result = await sql.query `SELECT * FROM dbo.Books WHERE Title = ${input} OR Kind = ${input} OR Author = ${input} OR Title LIKE ${inputWithWildcard}` ;
    return result.recordset;
}

方法2:在SQL中用CONCAT拼接通配符

通过SQL的CONCAT函数将%和参数拼接,避免模板字符串解析错误:

async function searchBook(input){
    let result = await sql.query `SELECT * FROM dbo.Books WHERE Title = ${input} OR Kind = ${input} OR Author = ${input} OR Title LIKE CONCAT('%', ${input}, '%')` ;
    return result.recordset;
}

额外优化提示

实际上Title = ${input}的精确匹配逻辑已经包含在Title LIKE %${input}%的模糊匹配中,如果你不需要区分精确和模糊,可以简化查询条件,减少重复逻辑。

内容的提问来源于stack exchange,提问作者Blago Damqnov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:20:42