Javascript 字符串插值以使用数组创建 SQL 查询
Javascript string interpolation to create SQL query with Array
我想创建一个 SQL 查询,查询 select 值在字符串数组中的所有记录。
说我有以下数组
myarray = ['a', 'b', 'c']
我想用它来构建这样的查询
SELECT * FROM my_table WHERE mycol IN ('a', 'b', 'c')
常规字符串插值显然不适用于此。我什至试过 sql-bricks 但显然它不支持 IN with WHERE。
有没有在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("','")
}');`
==>
"SELECT * FROM my_table WHERE mycol IN ('a','b','c');"
此外,为了避免 sql 注入,您应该首先将 myarray 映射到一个数组,其中 ' 已被替换为 ''。
. 即。
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("','") }');`
我想创建一个 SQL 查询,查询 select 值在字符串数组中的所有记录。 说我有以下数组
myarray = ['a', 'b', 'c']
我想用它来构建这样的查询
SELECT * FROM my_table WHERE mycol IN ('a', 'b', 'c')
常规字符串插值显然不适用于此。我什至试过 sql-bricks 但显然它不支持 IN with WHERE。
有没有在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("','")
}');`
==>
"SELECT * FROM my_table WHERE mycol IN ('a','b','c');"
此外,为了避免 sql 注入,您应该首先将 myarray 映射到一个数组,其中 ' 已被替换为 ''。
. 即。
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("','") }');`