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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值