如何在 Knex 查询中执行 MySQL 函数?
How to execute a MySQL function in a Knex query?
我的 table 中有一个 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()
而不会被误认为是列名?
我找到了解决办法。我必须使用 raw()
函数。所以我的查询生成器将如下所示:
knex('users').select(knex.raw('HEX(`users`.`id`) AS id')).where(filter);
使用 knex 来引用标识符,它看起来像这样:
knex('users').select(knex.raw('HEX(??) AS id', ['users.id'])).where(filter);
我的 table 中有一个 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()
而不会被误认为是列名?
我找到了解决办法。我必须使用 raw()
函数。所以我的查询生成器将如下所示:
knex('users').select(knex.raw('HEX(`users`.`id`) AS id')).where(filter);
使用 knex 来引用标识符,它看起来像这样:
knex('users').select(knex.raw('HEX(??) AS id', ['users.id'])).where(filter);