MySQL select where JSON field property has value

后端 未结 2 2133
栀梦
栀梦 2020-12-29 05:26

How to write a basic MySQL query that has a WHERE on a property within a JSON data-type field? I don\'t see basic where clause q for json fields on SO.

Something lik

相关标签:
2条回答
  • 2020-12-29 05:57

    Some examples of how to query a json data type field:

    SELECT * FROM users WHERE JSON_EXTRACT(meta_data, "$.first_name") = 'bob';
    
    SELECT * FROM users WHERE JSON_EXTRACT(meta_data, "$.age") IS NOT NULL;
    
    SELECT * FROM users WHERE JSON_EXTRACT(meta_data, "$.accepted_policy") = true;
    

    With mysql 5.7.9 +

    You can also just do this (shortcut for JSON_EXTRACT):

    SELECT * FROM users WHERE meta_data->"$.first_name" = 'bob'
    

    You might notice your json data results are "quoted". You could use JSON_UNQUOTE, or you could use this, which is a shortcut of JSON_EXTRACT & JSON_UNQUOTE:

    SELECT meta_data->>"$.first_name" FROM users WHERE meta_data->>"$.first_name" IS NOT NULL
    

    And to select data from within sub objects:

    SELECT meta_data->>"$.address.tel" FROM users WHERE meta_data->>"$.address.street" = "123 Main St"
    

    docs: https://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html

    0 讨论(0)
  • 2020-12-29 06:07

    Use Below query for do WHERE opration with JSON Datatype Feild in mysql

    SELECT meta_data->'$.first_name' meta_data FROM users WHERE INSTR(meta_data->'$.first_name','123') > 0
    
    0 讨论(0)
提交回复
热议问题