簡體   English   中英

MySQL - 選擇 json_column 具有特定值的行

[英]MySQL - Select rows where json_column has specific value

我有一個包含 JSON 的列trip_info的 MySQL 表測試,例如:

{
    "trips": [{
        "id": "261213_0",
        "type": "CD",
        "truck": "1847",
        "planbloc": "EE_001",
        "reuse": "EE_001",
        "status": "4",
        "stops": [{
            "208201": [{
                "handling": "S",
                "date": "2021-07-16"
            }],
            "D_517318_SZENTGOTTHARD": [{
                "handling": "S",
                "date": "2021-07-16"
            }],
            "T_857925_LOIPERSDORF - KITZLADEN": [{
                "handling": "C",
                "date": "2021-07-16"
            }],
            "T_895103_OBERWART": [{
                "handling": "C",
                "date": "2021-07-16"
            }],
            "D_613251_SCHACHENDORF": [{
                "handling": "S",
                "date": "2021-07-16"
            }],
            "T_894297_SZIGETSZENTMIKLOS": [{
                "handling": "D",
                "date": "2021-07-19"
            }]
        }]
    }]
}

我想選擇我的表中包含處理 'C' 的停止 ID '208201' 的所有行。 我嘗試了以下查詢但沒有成功:

SELECT * FROM test WHERE JSON_CONTAINS(trip_info, '"208201"', '$.trips.stops') AND JSON_CONTAINS(trip_info, '"C"', '$.trips.stops.handling')

任何人都可以幫忙嗎?

嘗試以下查詢:

MySQL v5.7

SELECT * 
FROM test 
WHERE JSON_CONTAINS(JSON_UNQUOTE(trip_info->"$.trips[*].stops[*].""208201""[*].handling"), '"C"');

檢查dbfiddle

MariaDB v10.3

SELECT * 
FROM test 
WHERE JSON_CONTAINS(JSON_UNQUOTE(JSON_EXTRACT(trip_info, "$.trips[*].stops[*].""208201""[*].handling")), '"C"');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM