簡體   English   中英

Mysql 5.7中解析JSON列Array數據

[英]Parsing out JSON column Array data in Mysql 5.7

我有一些這樣的數據

Product Siz Color     RFIDs
GO1199  5XL WHIT    "[\"300ED89F335000B333B8CA8D\",\"300ED89F335000B333B8C5F3\",\"E2009A4050026AF000001928\"]"
GO1189  LAR WHIT    "[\"300ED89F335000B333B8CA8D\",\"300ED89F335000B333B8C5F3\",\"E2009A4050026AF000001928\"]"
GO1179  LAR WHIT    "[\"300ED89F335000B333B8CA76\",\"300ED89F335000B333B8C7C8\",\"300ED89F335000B333B8C58D\"]",
GO1169  LAR WHIT    "[\"300ED89F335000999A72D381\",\"300ED89F3350007FC4FDCCFB\",\"300ED89F3350007FC4FDDEF9\"]",
GO1199  LAR WHIT    "[\"300ED89F3350007FC4FDDF5E\",\"300ED89F3350007FC4FDDDE1\",\"300ED89F3350007FC4FDDDDF\"]"

最后一列是與該產品相關聯的 RFID 陣列。 我想用SQL將它表達出來並像這樣顯示它

Product Siz Color     RFID
GO1199  5XL WHIT    300ED89F335000B333B8CA8D
GO1199  5XL WHIT    300ED89F335000B333B8C5F3
GO1199  5XL WHIT    E2009A4050026AF000001928
GO1189  LAR WHIT    300ED89F335000B333B8CA8D
GO1189  LAR WHIT    300ED89F335000B333B8C5F3
GO1189  LAR WHIT    E2009A4050026AF000001928

謝謝。

抱歉,這是 5.7 而不是 8

在 MySQL 8.0 中,使用json_table()

select t.product, t.size, t.color, x.rfid
from mytable t
cross join json_table(t.rfids, '$[*]' columns (rfid varchar(50) path '$')) x

在早期版本中,它有點復雜。 基本上你需要一個數字表來取消嵌套數組:

select t.product, t.size, t.color, 
    json_unquote(json_extract(t.rfids, concat('$[', n.i, ']'))) rfid
from mytable t
inner join (select 0 i union all select 1 union all select 2) n
    on n.i < json_length(t.rfids)

您可以使用更多數字擴展子查詢,以處理每個數組 3 個以上的項目。

DB Fiddle 上的演示

product | size | color | rfid                    
:------ | :--- | :---- | :-----------------------
GO1199  | 5XL  | WHIT  | E2009A4050026AF000001928
GO1199  | 5XL  | WHIT  | 300ED89F335000B333B8C5F3
GO1199  | 5XL  | WHIT  | 300ED89F335000B333B8CA8D
GO1189  | LAR  | WHIT  | E2009A4050026AF000001928
GO1189  | LAR  | WHIT  | 300ED89F335000B333B8C5F3
GO1189  | LAR  | WHIT  | 300ED89F335000B333B8CA8D
GO1179  | LAR  | WHIT  | 300ED89F335000B333B8C58D
GO1179  | LAR  | WHIT  | 300ED89F335000B333B8C7C8
GO1179  | LAR  | WHIT  | 300ED89F335000B333B8CA76
GO1169  | LAR  | WHIT  | 300ED89F3350007FC4FDDEF9
GO1169  | LAR  | WHIT  | 300ED89F3350007FC4FDCCFB
GO1169  | LAR  | WHIT  | 300ED89F335000999A72D381
GO1199  | LAR  | WHIT  | 300ED89F3350007FC4FDDDDF
GO1199  | LAR  | WHIT  | 300ED89F3350007FC4FDDDE1
GO1199  | LAR  | WHIT  | 300ED89F3350007FC4FDDF5E

暫無
暫無

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

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