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

Node.js中使用mssql包如何在查询中结合LIKE与输入参数?

解决mssql NPM包的LIKE查询问题

我之前也遇到过这个困扰!mssql的文档确实没明确提及LIKE查询的具体用法,但其实它的参数化查询机制完全支持这类需求,给你两种靠谱的实现方式:

1. 推荐:模板字符串参数化查询(最安全)

这种写法是mssql官方推荐的方式,会自动处理参数绑定,彻底避免SQL注入风险:

const sql = require('mssql');

async function searchUsers(usernameKeyword) {
  try {
    // 先建立数据库连接
    await sql.connect('你的数据库连接字符串');
    
    // 使用模板字符串编写带参数的查询
    const queryResult = await sql.query`
      SELECT * FROM Users
      WHERE Username LIKE '%${usernameKeyword}%'
    `;
    
    // 处理查询结果
    console.log('查询到的用户:', queryResult.recordset);
  } catch (error) {
    console.error('查询出错:', error);
  } finally {
    // 记得关闭连接
    await sql.close();
  }
}

// 调用示例:查找用户名包含"john"的用户
searchUsers('john');

2. 备选:使用Request对象的input方法

如果更习惯用Request对象管理查询参数,也可以通过以下两种方式实现:

方式一:在参数中加入通配符

async function searchUsers(usernameKeyword) {
  try {
    await sql.connect('你的数据库连接字符串');
    const request = new sql.Request();
    
    // 将通配符与搜索关键词拼接后作为参数传入
    request.input('keyword', sql.VarChar, `%${usernameKeyword}%`);
    
    const queryResult = await request.query(`
      SELECT * FROM Users
      WHERE Username LIKE @keyword
    `);
    
    console.log('查询到的用户:', queryResult.recordset);
  } catch (error) {
    console.error('查询出错:', error);
  } finally {
    await sql.close();
  }
}

方式二:在SQL语句中拼接通配符

async function searchUsers(usernameKeyword) {
  try {
    await sql.connect('你的数据库连接字符串');
    const request = new sql.Request();
    
    // 直接传入纯关键词参数
    request.input('keyword', sql.VarChar, usernameKeyword);
    
    // 在SQL语句中用+拼接通配符
    const queryResult = await request.query(`
      SELECT * FROM Users
      WHERE Username LIKE '%' + @keyword + '%'
    `);
    
    console.log('查询到的用户:', queryResult.recordset);
  } catch (error) {
    console.error('查询出错:', error);
  } finally {
    await sql.close();
  }
}

重要提醒

绝对不要直接将用户输入拼接进SQL字符串(比如const query = "SELECT * FROM Users WHERE Username LIKE '%" + username + "%'"),这种写法会导致严重的SQL注入漏洞,一定要使用上面的参数化查询方式。

内容的提问来源于stack exchange,提问作者Sir Rubberduck

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:57:03