从mysql查询特定的JSON键值

时间:2018-08-20 07:08:58

标签: php mysql codeigniter

我有一个mysql(v5.7.23)表,其中包含这样的json对象

[{
    "plant_part": "Leaves, Seed",
    "extract_type": "Ethanol",
    "activity": "Colon Cancer",
    "reference": "6"
  },
  {
    "plant_part": "Leaves, Seed",
    "extract_type": "Ethanol",
    "activity": "Lung Cancer",
    "reference": "6"
  }]

现在,我只想从“活动”键中获得价值。这就是我正在尝试的。

$sql = "select * from table where column like '%".$term."%';

,但这将从该列中选择所有值。有什么办法可以从特定键获取结果?

我的意思是这样的?

$sql = "select * from table where column.activity like '%".$term."%';

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用JSON_EXTRACT来找到activity的值并进行比较:

$sql = "SELECT * 
        FROM table
        WHERE JSON_EXTRACT(column,  '$[*].activity') LIKE '%".$term."%'";

对于您的示例数据,JSON_EXTRACT将返回["Colon Cancer", "Lung Cancer"],然后可以将其与例如"%Cancer%"