【问题标题】:Mysql select jsonmysql选择json
【发布时间】:2021-05-26 20:33:45
【问题描述】:

我有一个表,其中一列是 json,如下所示:

{"type":"select","description":"Rota","default":"",
"required":"0","listOptions":[{"text": "1 - Jardins", "value": "1"}, {"text": "2 - Praia do Canto/Shop Vix", "value": "2"}, {"text": "3 - Hotéis Vitória/Serra", "value": "3"}, {"text": "6 - Hotéis Vila Velha/Padarias Praia da Costa", "value": "6"}, {"text": "9 - Cariacica", "value": "9"}, {"text": "5 - Vitória/Vila Velha", "value": "5"}, {"text": "10 - Baú/Reboque", "value": "10"}}

我可以这样选择:select atributos->"$.listOptions" from table

我的问题是,如何从listOptions 中选择值?

【问题讨论】:

    标签: mysql json


    【解决方案1】:

    使用[*] 提取所有数组项值。

    SELECT  atributos->"$.listOptions[*].value" FROM test;
    

    要提取指定项目,请使用例如第一个项目值。

    SELECT  atributos->"$.listOptions[0].value" FROM test;
    

    请参阅Runnable DBFiddle instance

    【讨论】:

    • 我可以通过 $.listOptions[*].value 使用一些过滤器吗?
    【解决方案2】:

    在 mysql 8 中你可以使用JSON_TABLE

    CREATE tABLE TAB1 (atributos json);
    
    INSERT INTO TAB1 VALUES ('{"type":"select","description":"Rota","default":"",
    "required":"0","listOptions":[{"text": "1 - Jardins", "value": "1"}, {"text": "2 - Praia do Canto/Shop Vix", "value": "2"}, {"text": "3 - Hotéis Vitória/Serra", "value": "3"}, {"text": "6 - Hotéis Vila Velha/Padarias Praia da Costa", "value": "6"}, {"text": "9 - Cariacica", "value": "9"}, {"text": "5 - Vitória/Vila Velha", "value": "5"}, {"text": "10 - Baú/Reboque", "value": "10"}]}');
    
    SELECT atributos->"$.description", tt1.*
         FROM TAB1,
           JSON_TABLE(
             atributos,
             "$.listOptions[*]"
            COLUMNS (
               mytext VARCHAR(100) PATH "$.text" DEFAULT '0' ON EMPTY DEFAULT '-99' ON ERROR,
               myvalue INT PATH "$.value" 
           ) ) tt1;
           
    
    属性->“$.description”|正文 |我的价值 :------------------------- | :------------------------------------------------------------ | ------: 《罗塔》 | 1 - 花园 | 1 《罗塔》 | 2 - Praia do Canto/Shop Vix | 2 《罗塔》 | 3 - 维多利亚/塞拉酒店 | 3 《罗塔》 | 6 - Hotéis Vila Velha/Padarias Praia da Costa | 6 《罗塔》 | 9 - 卡里亚西卡 | 9 《罗塔》 | 5 - 维多利亚/维拉维哈 | 5 《罗塔》 | 10 - Baú/Reboque | 10

    db小提琴here

    【讨论】:

      猜你喜欢
      • 2016-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多