mysql 生成json,结合CONCAT()和COALESCE()在MySQL中生成JSON
我正在從函數(shù)構(gòu)建小JSON塊,我需要過(guò)濾空值,同時(shí)引用像這樣的非空值(MySQL 5.0,所以沒(méi)有內(nèi)置的JSON函數(shù)):
COALESCE(CONCAT('[',
group_concat(
CONCAT('{ "key": "', REPLACE(a.val, '"', '\\"'), '"}')
SEPARATOR ', ')
, ']'), 'null') AS jsonval
輸出類似這樣的東西(這是一個(gè)嵌入完整JSON塊的值):
>帶值:[{“key”:“foo”},{“key”:“bar”},{“key”:“baz”}]
>沒(méi)有值(NULL):null
>帶空字符串:[{“key”:“”}]
對(duì)于每個(gè)a.val,我想在我的列表中添加一個(gè)條目,但是如果沒(méi)有找到值,則將字符串設(shè)置為null而不是完整列表.它工作得很好,但我需要在結(jié)果JSON中處理空字符串以及NULL值為null.
REPLACE(),CONCAT()和COALESCE()在空值上很好地協(xié)同工作,但是沒(méi)有檢測(cè)到空字符串,我怎樣才能以相同的方式處理NULL和空字符串?
我已經(jīng)看到有關(guān)條帶空值的this question,我正在尋找相反的結(jié)果.
解決方法:
只是迭代你的想法!
COALESCE(CONCAT('[',
group_concat(
CONCAT('{ "key": ',COALESCE(CONCAT('"', REPLACE(a.val, '"', '\\"'), '"'), 'null') ,'}')
SEPARATOR ', ')
, ']'), 'null') AS jsonval
編輯后:
COALESCE(CONCAT('[',
group_concat(
CONCAT('{ "key": ',
CASE WHEN a.val IS NULL THEN 'null'
WHEN a.val = '' THEN 'null'
ELSE CONCAT('"', REPLACE(a.val, '"', '\\"'), '"')
END
,'}')
SEPARATOR ', ')
, ']'), 'null') AS jsonval
標(biāo)簽:json,mysql,null,coalesce
來(lái)源: https://codeday.me/bug/20190527/1167068.html
總結(jié)
以上是生活随笔為你收集整理的mysql 生成json,结合CONCAT()和COALESCE()在MySQL中生成JSON的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 扣板多少钱啊?
- 下一篇: 花千骨的作者是谁啊?