gpt4 book ai didi

javascript - 通过 Node.js 使用未知数量的空参数进行 MySQL 查询

转载 作者:可可西里 更新时间:2023-11-01 08:05:46 25 4
gpt4 key购买 nike

我正在使用 this用于 Node.js 的 MySQL 插件。这是一个非常简单的查询:

db.query("SELECT * FROM user WHERE first = ? AND last = ?", [req.query.first, req.query.last], function(error, results) {
console.log(results);
});

现在问题来了:如果只定义了一些查询参数,但不是全部怎么办?这是一个非常常见的用例,所以我猜有一种优雅的方法可以解决这个问题,但这似乎是我所能想到的:

var query;
if (first && !last) {
query = "SELECT * FROM user WHERE first = ?";
} else if (!first && last) {
query = "SELECT * FROM user WHERE last = ?";
} else if (first && last) {
query = "SELECT * FROM user WHERE first = ? AND last = ?";
}
db.query(query, [req.query.first, req.query.last], function(error, results) {
console.log(results);
});

为每个可能的组合编写单独的查询显然是一种粗略的方法,如果查询参数不止几个,则实际上不是很实用。是否有更优雅(即简洁)的方法来解释未知数量的空参数?

更新

这就是最终为我工作的:

db.query("SELECT * FROM user WHERE (:first IS NULL || first = :first) AND (:last IS NULL || last = :last)", {first: req.query.first, last: req.query.last}, function(error, results) {
console.log(error);
});

最佳答案

这可能有点麻烦,但您可以使用此查询:

query = "SELECT * FROM user WHERE (? IS NULL || first = ?) AND (? IS NULL || last = ?)";

只需确保至少有一个参数不为空(无论是在查询中还是在 js 中)。

预计到达时间:如果您使用命名参数格式(:param 而不是 ?),这也会为您节省一些重复。

关于javascript - 通过 Node.js 使用未知数量的空参数进行 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25705645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com