javascript - SQL 一次搜索多个 id - Node/Express

标签 javascript sql sql-server node.js express

我正在使用 Node Express mssql 查询数据库以检索一些数据。我尝试发送的数据是逗号分隔的字符串。但数据库将它们识别为整数,因为它们是 id。问题是我的查询只识别第一个整数,而不识别后面的任何内容,例如,它只能识别 10 -> (10,11,12)。但我需要发送所有三个 ID。

路由.js

router.get('/', (req, res) => {
    connectPool.then(pool => {

let projectId = req.query.id
        let newAr = new Array();
        let cpnew = 0
        newAr = projectId.split(',')

        for(a in newAr){
            newAr[a] = parseInt(newAr[a])
        }

        console.log(newAr, 'logging new array')
        for(let i=0; i<newAr.length;i++){
            console.log(newAr, newAr[i], 'logging info')
            if(newAr.length - 1 == i){
                cpnew += newAr[i]
            } else if(i == 0){
                cpnew = newAr[i] + ','
            }
            else {
                cpnew += newAr[i] + ',' 
            }
        }

        let sqlString = ` 
        SELECT p.Name
        FROM Projects p with (nolock)
        WHERE p.ProjectsID IN ((@projectId))
        `

        return pool.request().input('projectId', sql.Int, cpnew).query(sqlString)
    }).then(result => {
        let rows = result.recordset[0]

        res.status(200).json(rows);
        sql.close();
    }).catch(err => {
        res.status(500).send({ message: err})
        sql.close();
    });
})

所以基本上我做对了,因为我返回查询是将逗号分隔的字符串 -> 10,11,12 更改为带有整数的数组 -> [10,11,12],然后将其更改为整数10,11,12 之间有逗号。然后将其放入我的字符串变量中。我可能离这里很远,但此时我迷路了。谢谢!

最佳答案

DECLARE @ProjectID VARCHAR(100) = '1,3,2';
SELECT  p.Name
FROM Projects p 
WHERE p.ProjectsID IN  ( SELECT  value
      FROM    STRING_SPLIT(@ProjectID, ',') ); /*STRING_SPLIT Function 
                                                 available from 
                                                 MSSQL 2016 and above*/

关于javascript - SQL 一次搜索多个 id - Node/Express,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50402886/

相关文章:

javascript - 单击按钮清除输入字段

javascript - 在javascript中使用for循环验证多个下拉列表

mysql - SQL查询性能-单条记录,按非索引列过滤,按索引列排序,记录在排序记录的序列中接近

sql - T-SQL 如何将逗号分隔的数字字符串转换为整数

sql-server - MS SQL 批量插入

sql-server - 数据库复制。 2台服务器,主数据库,第二台是只读的

javascript - 不显示特定通知 React Native

javascript - 我的 jquery 验证添加方法密码规则出现问题

sql - 根据多值参数中断 SSRS 报告

sql-server - SQL 作业和 Windows 任务计划程序有什么区别?