mysql 生成json,结合CONCAT()和COALESCE()在MySQL中生成JSON
我正在從函數構建小JSON塊,我需要過濾空值,同時引用像這樣的非空值(MySQL 5.0,所以沒有內置的JSON函數):
COALESCE(CONCAT('[',
group_concat(
CONCAT('{ "key": "', REPLACE(a.val, '"', '\\"'), '"}')
SEPARATOR ', ')
, ']'), 'null') AS jsonval
輸出類似這樣的東西(這是一個嵌入完整JSON塊的值):
>帶值:[{“key”:“foo”},{“key”:“bar”},{“key”:“baz”}]
>沒有值(NULL):null
>帶空字符串:[{“key”:“”}]
對于每個a.val,我想在我的列表中添加一個條目,但是如果沒有找到值,則將字符串設置為null而不是完整列表.它工作得很好,但我需要在結果JSON中處理空字符串以及NULL值為null.
REPLACE(),CONCAT()和COALESCE()在空值上很好地協同工作,但是沒有檢測到空字符串,我怎樣才能以相同的方式處理NULL和空字符串?
我已經看到有關條帶空值的this question,我正在尋找相反的結果.
解決方法:
只是迭代你的想法!
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
標簽:json,mysql,null,coalesce
來源: https://codeday.me/bug/20190527/1167068.html
總結
以上是生活随笔為你收集整理的mysql 生成json,结合CONCAT()和COALESCE()在MySQL中生成JSON的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 扣板多少钱啊?
- 下一篇: php 事件调度,mysql数据库事件调