【问题标题】:JSON_EXTRACT() Query returns NULLJSON_EXTRACT() 查询返回 NULL
【发布时间】:2020-06-02 01:15:38
【问题描述】:

您好,我有一个关于 mysql json_extract 函数的问题。

DROP TABLE IF EXISTS `db`.`PacJSON`;  
CREATE TABLE PacJSON SELECT  * FROM PAC;  
ALTER TABLE PacJSON ADD COLUMN hc JSON DEFAULT NULL;
UPDATE `db`.`PacJSON`
SET `hc`='[{"estado":"1"},{"descripcion":"name1"},{"estudio": "name2"}, {"url":"name3"},{"idpaciente":"11"},{"idmedico":"6"},{"fecha_hc":"2019-05-2"}]' 
WHERE idUsuario=11;

下面的查询在应该返回 6 时返回了一个空值。 谁能告诉我我做错了什么?

SELECT idUsuario,PacJSON.hc ,JSON_UNQUOTE(JSON_EXTRACT(hc ,'$."idmedico"')) AS "idmedico"
 FROM PacJson;

谢谢!

【问题讨论】:

    标签: mysql sql arrays json


    【解决方案1】:

    您的hc 值包含一个对象数组,因此您需要使用反映该值的路径,即$[*].idmedico。请注意,路径中不应使用双引号

    SELECT idUsuario,
           hc,
           JSON_UNQUOTE(JSON_EXTRACT(hc ,'$[*].idmedico')) AS idmedico
    FROM PacJSON
    

    输出:

    ["6"]
    

    请注意,因为hc 是一个数组,所以JSON_EXTRACT 也返回一个。如果您知道 JSON 中只有一个 idmedico 值,则可以在该结果上再次使用 JSON_EXTRACT 以获取实际数值:

    SELECT idUsuario,
           hc,
           JSON_UNQUOTE(JSON_EXTRACT(JSON_EXTRACT(hc ,'$[*].idmedico'), '$[0]')) AS idmedico
    FROM PacJSON
    

    输出:

    6
    

    Demo on dbfiddle

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-02
      • 2013-04-28
      • 2019-06-14
      • 2020-01-07
      • 2015-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多