我的表名users
包含列名user_email
。 user_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
运算符或其他内容吗?
答案 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插入该表中。