小编Pre*_*euk的帖子

结合CONCAT()和COALESCE()在MySQL中生成JSON

我正在从函数构建小JSON块,我需要过滤空值,同时引用像这样的非空值(MySQL 5.0,所以没有内置的JSON函数):

COALESCE(CONCAT('[', 
    group_concat(
        CONCAT('{ "key": "', REPLACE(a.val, '"', '\\"'), '"}') 
        SEPARATOR ', ')
, ']'), 'null') AS jsonval
Run Code Online (Sandbox Code Playgroud)

输出类似这样的东西(这是一个嵌入完整JSON块的值):

  • 值: [{"key": "foo"}, {"key": "bar"}, {"key": "baz"}]
  • 没有值(NULL): null
  • 用空字符串: [{"key": ""}]

对于每个a.val我想在我的列表中添加一个条目,但null如果没有找到值,则使用字符串而不是完整列表.它工作得很好,但我需要NULL在结果JSON中处理空字符串以及值为null.

REPLACE(),CONCAT()并且COALESCE()对于空值一起工作得非常好,但是没有检测到空字符串,我如何以相同的方式处理NULL和空字符串?

我已经看到了关于条带化空值的这个问题,我正在寻找相反的问题.

mysql null json coalesce

4
推荐指数
1
解决办法
1222
查看次数

标签 统计

coalesce ×1

json ×1

mysql ×1

null ×1