Sqlite:从 json 字符串中搜索值
Sqllite : search value from json string
我有 table 名称 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"
}
]
我想从 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 ;).
我有 table 名称 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"
}
]
我想从 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 ;).