SELECT MySQL JSON 列数据类型中的特定字段使用书架或 Knex ORM
SELECT specific fields inside the MySQL JSON Column datatype using bookshelf or Knex ORM
假设我有以下 MySQL table 结构:
============================================= =============
|编号 |姓名 |地址 |
++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++
| 1 |黎明 | {"state": "Maryland", "city": "Annapolis"} |
| 2 |巴勃罗| {"state": "Ohio", "city": "Columbus"} |
地址栏是json类型。我在我的应用程序中使用书架和 knex ORM,我需要进行查询,以便它可以获取不带城市的名称和州名。
我的普通 SQL 查询将如下所示:
select姓名、地址->"$.state"
来自用户
或
select 姓名, json_extract(地址, "$.state")
来自用户
但是当我使用 Bookshelf 时:
user.select('name', 'address->"$.state"').fetch().then(....)
由于引号和反引号格式,我在 SQL 命令中收到无效错误。
使用书架生成的SQL如下:
select 'address->\" '.'state\" ', 'name' from `user.
有什么建议可以避免点 (.) 字符周围的反引号问题吗??或者其他一些方法??
PS: 这只是一个例子
您可以像这样生成这些查询:
// select name, address->"$.state" from user
knex('user').select('name', knex.raw('??->"$.state"', ['address']))
// select name, json_extract(address, "$.state") from user
knex('user').select('name', knex.raw('json_extract(??, "$.state")', ['address']))
假设我有以下 MySQL table 结构:
============================================= ============= |编号 |姓名 |地址 | ++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++
| 1 |黎明 | {"state": "Maryland", "city": "Annapolis"} |
| 2 |巴勃罗| {"state": "Ohio", "city": "Columbus"} |
地址栏是json类型。我在我的应用程序中使用书架和 knex ORM,我需要进行查询,以便它可以获取不带城市的名称和州名。 我的普通 SQL 查询将如下所示:
select姓名、地址->"$.state" 来自用户
或
select 姓名, json_extract(地址, "$.state") 来自用户
但是当我使用 Bookshelf 时: user.select('name', 'address->"$.state"').fetch().then(....)
由于引号和反引号格式,我在 SQL 命令中收到无效错误。 使用书架生成的SQL如下:
select 'address->\" '.'state\" ', 'name' from `user.
有什么建议可以避免点 (.) 字符周围的反引号问题吗??或者其他一些方法??
PS: 这只是一个例子
您可以像这样生成这些查询:
// select name, address->"$.state" from user
knex('user').select('name', knex.raw('??->"$.state"', ['address']))
// select name, json_extract(address, "$.state") from user
knex('user').select('name', knex.raw('json_extract(??, "$.state")', ['address']))