如何在Azure Data Factory中合并3列并将Null值替换为空白
合并三列为Fullname并处理Null值的解决方案
核心思路
直接用CONCAT会因为Null值导致拼接结果异常(部分数据库中只要有一个Null,整个拼接结果就会变成Null),所以需要先把每个列的Null值替换为空字符串,再进行拼接,最后处理多余的空格。
示例数据
| First Name | Middle Name | Lastname |
|---|---|---|
| Priya | NULL | Raju |
| Ramesh | shakti | Prabha |
不同数据库的实现代码
MySQL/MariaDB
使用IFNULL函数替换Null为空串,再用TRIM去除首尾多余空格:
SELECT `First Name`, `Middle Name`, Lastname, TRIM(CONCAT( IFNULL(`First Name`, ''), ' ', IFNULL(`Middle Name`, ''), ' ', IFNULL(Lastname, '') )) AS Fullname FROM your_table;
PostgreSQL/SQL Server
使用更通用的COALESCE函数替换Null,逻辑和上面一致:
SELECT "First Name", "Middle Name", Lastname, TRIM(CONCAT( COALESCE("First Name", ''), ' ', COALESCE("Middle Name", ''), ' ', COALESCE(Lastname, '') )) AS Fullname FROM your_table;
处理中间多余空格(可选)
如果担心中间出现多个连续空格(比如某两列同时为空的情况),可以用正则替换把多个空格合并为单个:
- MySQL:
REGEXP_REPLACE( CONCAT( IFNULL(`First Name`, ''), ' ', IFNULL(`Middle Name`, ''), ' ', IFNULL(Lastname, '') ), ' +', ' ' ) AS Fullname
- PostgreSQL:
REGEXP_REPLACE( CONCAT( COALESCE("First Name", ''), ' ', COALESCE("Middle Name", ''), ' ', COALESCE(Lastname, '') ), '\s+', ' ', 'g' ) AS Fullname
内容的提问来源于stack exchange,提问作者Debashis
相关产品推荐
相关产品推荐

