【发布时间】:2018-08-26 07:20:22
【问题描述】:
我有一列包含 JSON 数据,我想在我的查询中使用该列,但我尝试了很多事情,但不能请指导我如何在 SQL 中使用带有 IN 运算符的 JSON 字符串列? 我有下表和查询。
table1
------------
id | ids |
1 | [1,2] |
2 | [3,4] |
3 | [5] |
4 | [] |
5 | [1,5,6]|
-------------
table2
------------
id | name |
1 | raj |
2 | mohan |
3 | test |
4 | name1 |
5 | hello |
-------------
SELECT * FROM `table1` t1
LEFT JOIN table2 t2 ON ( t2.id IN (replace(replace(t1.ids,"[",""),"]","")) )
WHERE p.id = 2
【问题讨论】:
-
这似乎是一个奇怪的要求,我觉得更好的选择是重组这些值的存储方式,这样您就可以按照预期的方式使用它们数据库。但是,如果您别无选择,我认为您走在正确的轨道上。我会尝试简化您的查询以测试原理,因此只需使用上面的 where 子句做一个简单的
select * from table1,这可能会使尝试变得更容易。我的猜测是问题与数据类型有关 - 也许 table2 中的 id 列是数字类型,而 JSON 是字符串,在这种情况下,您需要考虑强制转换。
标签: mysql sql json in-operator