使用数组创建SQL查询的Javascript字符串插值
我想创建一个SQL查询来选择值位于字符串数组中的所有记录。 假设我有以下数组使用数组创建SQL查询的Javascript字符串插值,javascript,sql,arrays,postgresql,string-interpolation,Javascript,Sql,Arrays,Postgresql,String Interpolation,我想创建一个SQL查询来选择值位于字符串数组中的所有记录。 假设我有以下数组 myarray=['a','b','c'] 我想用它来构造这样的查询 从Mycl所在的my_表中选择*('a','b','c') 常规字符串插值显然不适用于此。我甚至尝试过,但显然它不支持在何处 有没有在SQL查询中使用数组的好方法 let sql = `SELECT * FROM my_table WHERE mycol IN ('${ myarray.join("','") }');` 此外,如果要删除空值: l
myarray=['a','b','c']
我想用它来构造这样的查询
从Mycl所在的my_表中选择*('a','b','c')
常规字符串插值显然不适用于此。我甚至尝试过,但显然它不支持在何处
有没有在SQL查询中使用数组的好方法
let sql = `SELECT * FROM my_table WHERE mycol IN ('${ myarray.join("','") }');`
此外,如果要删除空值:
let myarray = ['a', 'b', null, 'c']
let sql = `SELECT * FROM my_table WHERE mycol IN ('${
myarray.filter(function (el) {
return el != null;
}).join("','")
}');`
==>
“从my_表中选择*,其中mycl位于('a','b','c');”
此外,为了避免sql注入,您应该首先将myarray映射到一个数组,其中“已被替换为”
.ie
谢谢。这确实有效。我很惊讶没有找到更优雅的方式来做这件事。。鉴于这是一个标准用例。
let myarray = ['a', 'b', null, 'c', "d'Alambert"]
.filter(function (el) { return el != null; })
.map(function(el){ return el.replace(/'/g, "''");});
let sql = `SELECT * FROM my_table WHERE mycol IN ('${ myarray.join("','") }');`