JavaScript写一个方法,第一个参数sql字符串,第二个参数,条件对象,要求方法返回完整sql语句,把条件加到SQL语句中
时间: 2023-07-04 19:06:20 浏览: 61
可以使用模板字符串来拼接 SQL 语句,然后使用对象的键值对来替换模板字符串中的占位符。以下是一个示例函数:
```javascript
function addConditionsToSql(sql, conditions) {
// 使用正则表达式匹配出 SQL 中的占位符
const regex = /:\w+/g;
const placeholders = sql.match(regex);
// 对每个占位符进行替换
for (const placeholder of placeholders) {
const key = placeholder.substring(1);
if (conditions.hasOwnProperty(key)) {
sql = sql.replace(placeholder, conditions[key]);
} else {
throw new Error(`Missing value for placeholder ${placeholder}`);
}
}
return sql;
}
```
例如,假设有以下 SQL 查询语句:
```sql
SELECT * FROM users WHERE age > :minAge AND name LIKE :name
```
调用该函数:
```javascript
const sql = addConditionsToSql(
"SELECT * FROM users WHERE age > :minAge AND name LIKE :name",
{ minAge: 18, name: "%John%" }
);
console.log(sql);
```
输出结果为:
```sql
SELECT * FROM users WHERE age > 18 AND name LIKE '%John%'
```
注意,上面的代码没有对输入参数进行严格的验证,例如 SQL 注入攻击等问题需要自行处理。