为什么在MySQL上使用UNION ALL时,空记录会导致整个行为空?

架构看起来像

CREATE TABLE `test` (
    `id` INT,
    `countryCode` VARCHAR(50),
    `state` VARCHAR(50)
)  ENGINE=INNODB DEFAULT CHARSET=UTF8MB4 COLLATE = UTF8MB4_0900_AI_CI;

数据看起来像

insert into `test` values 
(1,'AE','AE'),
(2,'SA','SA'),
(3,NULL,'SA') ;

我们正在使用下面的查询来生成最终将被转储到数据文件中的数据

SELECT ('id|countryCode|state|') AS `line` 
UNION ALL SELECT 
    CONCAT(CONCAT(`id`, '|'),
            CONCAT(`countryCode`, '|'),
            CONCAT(`state`, '|')) AS `line`
FROM
    `test`;

因此,这里的问题是,如果记录为空,则在这种情况下,id 3的国家/地区代码为空,查询会将行视为空。目前的输出是

id|countryCode|state|
1|AE|AE|
2|SA|SA|
*null*

我应该怎么做才能使查询返回返回的数据,而不是返回整行为null的数据。

所需的输出是

id|countryCode|state|
1|AE|AE|
2|SA|SA|
3||SA

dbfiddle

福帕斯

CONCAT()NULL如果其任何参数为,则返回NULL
我建议您CONCAT_WS()改用withCOALESCE()作为可能的列NULL

SELECT 'id|countryCode|state|' AS `line` 
UNION ALL 
SELECT CONCAT_WS('|', `id`, COALESCE(`countryCode`, ''), COALESCE(`state`, '')) AS `line`
FROM `test`;

参见演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当Range不为空时,为什么查询函数会导致单元格为空?

为什么空变量会导致崩溃

为什么在DataFrame上使用union()/ coalesce(1,false)时,Spark中的大量数据会乱码?

当将空列表作为函数的默认参数时,python为什么会显示此行为?

空向量上的std :: find是否会导致未定义的行为?

为什么向烧瓶中的函数添加请求会导致空 POST 时出现“错误请求”?

为什么类字段会导致空的 JSON 响应数据?

为什么空引号会导致不同的输出?

为什么包装 setMouseCallback 会导致 Mat 对象为空?

当部件被激活时,上下文为空。什么会导致这种情况?

为什么带有数组过滤器的 Promise.all 会导致空数组?

使用图表js时,代替日期的空值会导致浏览器崩溃

在可为空的可选参数中使用C#7.1默认文字会导致意外行为

为什么使用OR条件而不是Union导致性能问题

在macOS上用clang -O2编译C程序时,为什么“空”循环会导致总线错误?

为什么在使用CustomPainter时在整个屏幕上渐变绘制?

为什么在Promises上使用异步/等待时,netlify-lambda会记录UnhandledPromiseRejectionWarning?

当我尝试使用 Firebase 注销用户时,为什么 Redux 会抛出空错误?

为什么Javascript和AJAX调用(页面加载)导致数据库行为空?(Facebook画布)

使用ContentCachingRequestWrapper会导致参数映射为空

对列表使用.pop(),除非会导致列表为空

为什么对可为空的模式进行匹配会导致语法错误?

为什么“排序文件>文件”会导致文件为空?

为什么从原始列表弹出会导致反转的(原始列表)为空?

为什么读取具有空值的csv文件会导致IndexOutOfBoundException?

MySQL转义空/空记录

为什么在 dockerfile 卷上挂载时 emptydir 不为空?

为什么当我使用Reply.create()时,heroku上的hapi.js会导致传输错误

在列表项上使用翻译时,不透明度会导致奇怪的行为