我json在 MySQL 資料庫中有一個type列,存盤的資料結構如下:
table row 1:
{
"products":[
{
"price_c":"800",
"item":"cloth"
},
{
"price_f":"100",
"item":"food"
}
]
}
table row 2:
{
"products":[
{
"price_c":"600",
"item":"cloth"
},
{
"price_f":"200",
"item":"food"
}
]
}
我一直在嘗試提取priceass"item":"food"并通過查詢做到這一點:
SELECT column->>'$**.price_f' as Price FROM table
where JSON_CONTAINS(column, '{"item":"food"}', '$.products');
但是這種方法的問題在于它回傳
---------
| Price |
---------
| ["100"] |
| ["200"] |
---------
雖然我已經使用過,->>但結果仍然沒有被參考,我發現這可能是由于通配符$**.price。我試過了JSON_UNQUOTE,它也不起作用。我應該如何取消參考輸出?
這是dbfiddle 中的示例專案
uj5u.com熱心網友回復:
它是一個字串,因此使用字串函式洗掉不需要的字符
SELECT REGEXP_REPLACE(col1->>'$**.price_f' ,'[^0-9]','') as Price FROM tab1 where JSON_CONTAINS(col1, '{"item":"food"}', '$.products');
| 價格 | | :---- | | 200 | | 100 |
db<>在這里小提琴
MySql 5.7 你需要一一預先放置它們。并且可以在一個函式中完成
SELECT REPLACE(REPLACE(REPLACE(col1->>'$**.price_f' ,'[',''),']',''),'"','') as Price FROM tab1 where JSON_CONTAINS(col1, '{"item":"food"}', '$.products');
| 價格 | | :---- | | 200 | | 100 |
db<>在這里小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/335923.html
上一篇:引數型別“List<Plants>?”不能分配給引數型別“List<Plants>”
下一篇:查詢引數的語法不正確
