Node js Mysql查询字符串和数组

时间:2019-02-08 12:47:30

标签: mysql node.js

我正在尝试将城市数组传递给IN子句,但似乎在准备查询时将逗号分隔掉了

这是代码

let city = ["Moscow", "Paris"];
let sql = 'SELECT* FROM cities WHERE city IN ('+city+')';
console.log(sql);

在控制台中,我得到了

SELECT* FROM cities WHERE city IN (Moscow, Paris);

并因此在执行查询时出现异常!

有帮助吗?

3 个答案:

答案 0 :(得分:1)

尝试一下,它将起作用

var sql = "SELECT uid FROM cities where city IN ('" + gender.join("','") + "')";

结果:-

SELECT uid FROM cities where city IN ('Male','Female')

答案 1 :(得分:1)

使用查询生成器是一种更可取的方法,但是如果您的数组很长,则可以使用以下解决方案:

let stringifiedValues = JSON.stringify(city).replace(/\[|\]/g,'');
let sql = `SELECT * FROM cities WHERE city IN (${stringifiedValues})`;

答案 2 :(得分:1)

  1. 使用map函数来转换数组中的所有项目。您想将 quotes 添加到类似Moscow => 'Moscow'
  2. 的项目中
  3. 使用join将转换后的项目收集到 string 中。可以将分隔符指定为类似array.join(', ')
  4. 的参数
  5. 使用template literals(字符串插值)将字符串插入查询中。像这样${str}

const city = ["Moscow", "Paris"];
const injectedString = city.map(c => `'${c}'`).join(', ');

let sql = `SELECT * FROM cities WHERE city IN (${injectedString})`;
console.log(sql);