我有JSON列,我存储了像
这样的数据{ tag : ["as","bs","cs"] }
我想在ILIKE
内搜索此专栏,我相信JSON数据类型只是字符串,因此我使用了查询 -
SELECT * FROM public."Transactions" WHERE tags::text ILIKE '%as%'
上面的查询在sql
中工作正常我需要使用续集模型来实现这一点,但没有成功 代码我用的是
let searchQuery = [
{
payee: {
[Op.iLike]: '%' + search + '%'
}
},
{
tags: {
[Op.iLike]: '%as%'
}
}
];
错误为
未处理的拒绝SequelizeDatabaseError:运算符不存在: json ~~ *未知
答案 0 :(得分:1)
https://www.postgresql.org/docs/current/static/functions-json.html
检查运营商列表 - 没有~~
- ILIKE
不能与json一起使用。你必须将json转换成文本:
t=# select '{ "tag" : ["as","bs","cs"] }'::json::text ilike '%as%';
?column?
----------
t
(1 row)
或使用本机运营商:
t=# select ('{ "tag" : ["as","bs","cs"] }'::json)->'tag'->>0 = 'as';
?column?
----------
t
(1 row)
或者如果你是9.5及以上 - 转换为jsonb并使用其强大的运算符:
t=# select '{ "tag" : ["as","bs","cs"] }'::json::jsonb @> '{"tag":["as"]}'::jsonb;
?column?
----------
t
(1 row)
https://www.postgresql.org/docs/current/static/functions-json.html