Jun*_*Jun 8 javascript mysql node.js knex.js
我正在使用knex生成我的 SQL 查询。在knex文档中,它显示了这一点
knex('users').where('columnName', 'like', '%rowlikeme%')
Run Code Online (Sandbox Code Playgroud)
现在在我的应用程序中,我这样做了:
function search(term) {
term = "%" + term + "%";
knex('table').where('description', 'like', term);
// ...
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能逃脱,%以便它也%作为术语的一部分进行搜索?
谢谢。
对于这种情况,我使用
而是来自es6(安全版本)的字符串插值
knex('table').where('description', 'like', `%${term}%`)
Run Code Online (Sandbox Code Playgroud)
或??参数绑定
knex('table').whereRaw('description like \'%??%\'', [term])
Run Code Online (Sandbox Code Playgroud)
但在第一种情况下,您必须 100% 确定该术语是有效的,因为SQL 注入的可能性。
所以我正在寻找一种将 LOWER 函数应用于参数的正确方法。这是对我来说似乎效果很好的解决方案:
builder.whereRaw('LOWER(last_name) LIKE LOWER(?)', [`%${lastName}%`])
Run Code Online (Sandbox Code Playgroud)
小智 0
使用 RLIKE 而不是如下所示的 LIKE,它应该适合您。
function search(term){
knex('table').where('description','rlike',term);
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10586 次 |
| 最近记录: |