Mysql json 列上的 where 子句查询具有数组值

Mysql where clause query on json column has array value

我的数据库中有以下记录。

table= defense

id   Atype
1   {"Domain_name":www.pgmobile.com , "attack": true, "probability": "9.53"}
2   {"Domain_name":www.fb.com , "attack": false , "probability": "3.35"}
3   {"Domain_name":www.pub.com , "attack": true, "probability": "8.34"}

我想在 Atype 列上创建 where 子句条件。 Atype 攻击列中的哪里是真的...

例如:select * 来自防御 attack= true // 这里需要一些帮助

感谢您的帮助。

如果您的 Atype 在 table 中定义为 JSON,您可以使用此查询:

SELECT *
FROM defense
WHERE JSON_EXTRACT(Atype, '$.attack') = true;

从这里可以看出DBFiddle

For {"Domain_Name": ["www.fb.com"], "攻击": [false], "概率": [0.001]}

查询将使用 'like'

SELECT *
FROM defense
WHERE JSON_EXTRACT(Atype, '$.attack') LIKE '[false]';