如何在 Knex 查询中执行 MySQL 函数?
Posted
技术标签:
【中文标题】如何在 Knex 查询中执行 MySQL 函数?【英文标题】:How to execute a MySQL function in a Knex query? 【发布时间】:2017-11-24 13:53:42 【问题描述】:我的表中有一个BINARY
字段,我通常这样抓取:
SELECT HEX(users.id) AS id FROM users WHERE username = ?
我最近开始使用 Knex,因为我需要能够从对象动态生成 WHERE
子句。这是我尝试过的:
knex('users').select('HEX(users.id) AS id)').where(filter);
这是它生成的查询:
select `HEX(users`.`id)` as `id` ....
然后我尝试了这个:
knex('users').select('HEX(`users`.`id`) AS id').where(filter);
它提出了这个:
select `HEX(``users```.```id``)` as `id` ....
如何执行HEX()
而不被误认为是列名?
【问题讨论】:
【参考方案1】:使用 knex 来引用标识符,它看起来像这样:
knex('users').select(knex.raw('HEX(??) AS id', ['users.id'])).where(filter);
【讨论】:
【参考方案2】:我找到了解决方案。我必须使用raw()
函数。所以我的查询生成器将如下所示:
knex('users').select(knex.raw('HEX(`users`.`id`) AS id')).where(filter);
【讨论】:
我讨厌使用 raw。查询生成器有什么用?以上是关于如何在 Knex 查询中执行 MySQL 函数?的主要内容,如果未能解决你的问题,请参考以下文章
带有 Express 的 Knex.js,如何在 knex.commit 后跟 knex.select 查询?