Sqlite:从 json 字符串中搜索值

Sqllite : search value from json string

我有 table 名称 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 运算符或其他方式?

除非数据库支持JSON类型,否则JSON只是一个字符串。您要么需要将数据作为适当的 table 和列插入,要么使用具有 JSON type like PostgreSQL.

的 SQL 数据库

在 SQLite 中,您可以将该数据转换为新的 table 用于链接到卡片 table(我认为存在)的卡片电子邮件。

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 并将其插入 table。

在 SQLite 中有一个 JSON1 extension 你可以这样使用它:

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

related question about LIKE - HTH ;).