Sqllite:从json字符串搜索值

时间:2016-12-31 04:51:01

标签: sql sqlite

我的表名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"
  }
]

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

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

可以使用LIKE运算符或其他内容吗?

2 个答案:

答案 0 :(得分:4)

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

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

related question about LIKE - HTH;)。

答案 1 :(得分:1)

除非数据库支持JSON类型,否则JSON只是一个字符串。您需要将数据作为正确的表和列插入,或者使用带有JSON type like 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插入该表中。