6

我的表名users包含列名user_emailuser_email具有 json 格式数据的列,如下所示。

[
  {
    "card_email_id": "98",
    "card_id": "88",
    "email": "raj@ccs.sg",
    "type": "Home"
  },
  {
    "card_email_id": "99",
    "card_id": "88",
    "email": "maulik@ccs.sg",
    "type": "Home"
  }
]

我想仅在值中从 json 字符串中查询该搜索email值。

我已经尝试过 REGEXP,但 sqlite 不支持。

这可以使用LIKE运算符或其他东西吗?

4

2 回答 2

15

在 SQLite 中有一个JSON1 扩展,您可以像这样使用它:

SELECT *
FROM users, json_each(user_email)
WHERE 
    json_extract(json_each.value, '$.email') LIKE '%criteria%';

以及有关LIKE- HTH 的相关问题;)。

于 2016-12-31T08:50:45.763 回答
2

除非数据库支持 JSON 类型,否则 JSON 只是一个字符串。您要么需要将数据插入为适当的表和列,要么使用具有JSON 类型(如 PostgreSQL )的 SQL 数据库。

在 SQLite 中,您会将这些数据转换为链接到卡片表(我认为存在)的卡片电子邮件的新表。

create table card_email (
    id integer primary key auto_increment,
    card_id integer references cards(id),
    email text not null,
    type text not null
);

然后解析 JSON 并将其插入到该表中。

于 2016-12-31T05:54:09.717 回答