如何在 Knex 查询中执行 MySQL 函数?

sta*_*af1 6 mysql node.js knex.js

BINARY我的表中有一个字段,我通常这样抓取:

SELECT HEX(users.id) AS id FROM users WHERE username = ?
Run Code Online (Sandbox Code Playgroud)

我最近开始使用 Knex,因为我需要能够WHERE从对象动态生成子句。这是我尝试过的:

knex('users').select('HEX(users.id) AS id)').where(filter);
Run Code Online (Sandbox Code Playgroud)

这是它生成的查询:

select `HEX(users`.`id)` as `id` ....
Run Code Online (Sandbox Code Playgroud)

然后我尝试了这个:

knex('users').select('HEX(`users`.`id`) AS id').where(filter);
Run Code Online (Sandbox Code Playgroud)

它提出了这个:

select `HEX(``users```.```id``)` as `id` ....
Run Code Online (Sandbox Code Playgroud)

如何执行HEX()而不被误认为是列名?

Mik*_*stö 6

使用 knex 来引用标识符,它看起来像这样:

knex('users').select(knex.raw('HEX(??) AS id', ['users.id'])).where(filter);
Run Code Online (Sandbox Code Playgroud)