SQL-поиск для нескольких идентификаторов одновременно - Node / Express - PullRequest
0 голосов
/ 18 мая 2018

Я использую node express mssql для запроса к БД для получения некоторых данных.Данные, которые я пытаюсь отправить, представляют собой строку с запятой.Но БД распознает их как целые, потому что они идентификаторы.Проблема в том, что мой запрос распознает только первое целое число, а не что-нибудь после, поэтому, например, он распознает только 10 -> (10,11,12).Но мне нужно отправить все три идентификатора.

route.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.Затем поместите это в переменную в мою строку.Я мог бы быть далеко отсюда, но я потерян в этот момент.Спасибо!

1 Ответ

0 голосов
/ 18 мая 2018
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*/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...