如何从sql中的json数组字段中获取数据

时间:2018-08-03 03:48:14

标签: mysql sql node.js

我正在将node.js和squel.js用于SQL数据库。 我正在将字符串数组存储到一个表字段中。

让我们说,我的表名就像XYZ。 我的表格数据就像

id   col2
1    '["a", "b", "x", "y"]'
2    '["x", "y", "q"]'
3    '["q", "e"]'
4    '["p", "q"]'

现在我想知道如何进行搜索查询 如果我想如何查询是否要获取类似记录

  1. 如果我想获取包含["x", "y"]之类的所有记录。在这种情况下,我希望得到结果ID 1和2。
  2. 如果我想获取包含["q"]之类的所有记录。在这种情况下,我希望得到结果2和4。

请在这里帮助我,我被困在这里。预先感谢。

2 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,只需使用LIKE即可

对于第一个要求,您可以使用

SELECT * FROM yourtable WHERE col2 LIKE `%"x"%` AND col2 LIKE `%"y"%`

OR

SELECT * FROM yourtable WHERE col2 LIKE `%"x","y"%`

由于我不知道确切的格式,是否只是检查匹配xy?还是完全匹配"x","y"

对于第二个要求,您可以使用

SELECT * FROM yourtable WHERE col2 LIKE `%"q"%`

答案 1 :(得分:0)

col2可以是JSON列,因此您可以执行以下操作:

SELECT * FROM XYZ WHERE JSON_CONTAINS(col2, JSON_ARRAY('x', 'y'));
SELECT * FROM XYZ WHERE JSON_CONTAINS(col2, JSON_ARRAY('q'));

第二个查询将返回行234,但是我想您的期望可能被错误地陈述,因为'q'存在于{{1}中}所有这些数组。