【问题标题】:Mysql where clause query on json column has array valuejson列上的Mysql where子句查询具有数组值
【发布时间】:2021-04-27 07:00:29
【问题描述】:

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

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 * from defence where attack= true // 这里需要一些帮助

感谢您的帮助。

【问题讨论】:

    标签: mysql database where-clause


    【解决方案1】:

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

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

    你可以从这个DBFiddle看到

    【讨论】:

    • Atype 被定义为 VARCHAR。
    • 我看到它也适用于 VARCHAR。我更新了 DBFiddel。 :)
    • 函数 json_extract 的参数 1 中的 JSON 文本无效:“值无效。”收到此错误。
    • 您是否发现您的表定义和使用我的 DBFiddle 插入的数据之间存在对应关系?你用的是哪个版本的Mysql?
    • 如果列中的数据是这样的 {"Domain_Name": ["www.fb.com"], "attack": [false], "Probability": [0.001]}
    【解决方案2】:

    对于{“域名”:[“www.fb.com”],“攻击”:[false],“概率”:[0.001]}

    查询将使用“喜欢”

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-31
      • 2017-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-11
      • 2023-04-09
      相关资源
      最近更新 更多