在SQL查询中搜索单维JSON数组([“1”,“2”,...])

时间:2017-05-18 23:44:03

标签: mysql json

我正在使用mysqlnd 5.0.10并且我一直试图弄清楚如何做Field_A = Field_BField_A作为JSON ARRAY)。

Field_A = ["436","431","437","443","434"] Field_B = 436

我尝试过像

这样的事情
  • Field_A LIKE Field_B(这还不够准确)
  • JSON_TYPE(Field_A) IN (Field_B)

mysql的版本没有JSON_EXTRACT,只有我可以看到其工作的其他方式是regex

2 个答案:

答案 0 :(得分:1)

我无法找到在MySQL中执行此操作的可行方法,因此我决定解析所有JSON数据并将其移至带有INDEXING的单独表中,然后使用所述表搜索foreach($pks as $k => $v) { $values = explode('||', $v); $result[] = array_combine(range(1, count($values)), $values); //added $res[] = array_combine(['date', 'vessel'], $values) ; } Array ( [0] => Array ( [1] => 2017-04-15 [2] => KMTC_HOCHIMINH ) [1] => Array ( [1] => 2017-04-15 [2] => OOCL_NAGOYA ) )

如果有人确实知道这样做的可行方法,而不将所有数据移动到索引表中。我仍然感兴趣。

答案 1 :(得分:1)

这适用于我,我不确定这是否是您正在寻找的内容,但是联接确实会返回您提供的行作为示例(Field_A被声明为JSON,Field_B作为INT(11),Field_A的值是[" 436"," 431"," 437"," 443",&#34 ; 434"],Field_B的值是436)

 select * from A join B
 ON A.Field_A LIKE CONCAT('%"', B.Field_B, '"%')