SQL concat函数和concat_ws函数的区别
总结
相同点:都是将几个字符串拼接在一起的函数
异同点:
- 拼接的字符串中有null值时,返回结果不一样
- 参数代表的含义不一样。concat中的参数都是要拼接的,concat_ws的第一个参数是分隔符,后面才是要拼接的
concat函数
是将数据集的几个列拼接成一列。
concat(col1, col2, ..., colN) - Returns the concatenation of col1, col2, ..., colN.
https://spark.apache.org/docs/latest/api/sql/#concat
但是当某一列的值为null值时,即便其他列有值,那么也会返回null值。
SELECT concat("A", null ) from input1

那么如果,想忽略null值,返回有值的部分,可以加一个coalesce函数:
SELECT concat("A", coalesce(null,"") ) from input1

concat_ws函数
作用也是将数据集的几个列拼接成一列,但是可以一次性指定分隔符。第一个参数位置是指定的分隔符,之后的位置是要拼接的列。
concat_ws(sep[, str | array(str)]+) - Returns the concatenation of the strings separated by sep.
https://spark.apache.org/docs/latest/api/sql/#concat_ws
当某一列的值为null值时,concat_ws会跳过null值
SELECT concat_ws(",", "A", "B", "C", null) from input1

ps: 分隔符为null时,返回null。
所以:
当要拼接的列中有null值时,可以用
1. concat("A", coalesce(null,"") )
2. concat_ws(",", "A", "B", "C", null)。 适用于一次性指定分隔符
3. concat("", "A", "-", "B", ",", "C", null), 适用于分隔符是不一样的
分类:
数据分析
, SQL / SQL基本函数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通