如何在WHERE子句中使用JSON列作为条件

11
问题已经在标题中说明,下面是数据示例。
insert into table A values('a','b', {'key':'value'});

我希望能够使用WHERE子句基于键值对选择该行数据。请问如何实现?

3个回答

20

使用 JSON_VALUE

SELECT t.*
FROM tableA t
WHERE JSON_VALUE(col3, '$.key') LIKE 'some_value'

假设包含JSON值 {'key':'value'} 的列名为col3


感谢您的答复。=) - Mox
@Mox 很高兴能帮助你。 - Tim Biegeleisen
如果键位于另一个键下,例如:{"quote":{'key':'value'}},被称为col3,您可以使用WHERE JSON_VALUE(col3, '$.quote.key') LIKE 'some_value'。 我遇到了这种情况,想和大家分享一下,也许会有所帮助。 - undefined

5

如果你正在使用PostgreSQL,请使用以下查询

select * from table_name where column_name->>'key_name' = 'value_name';

-2

这是对我有效的解决方案:

column_name->'$.key'

已测试通过 mysql 服务器 5.7.27


很高兴知道这适用于MySQL。它适用于Oracle数据库吗? - Mox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接