concat()和 concat_ws() 区别
首先表名函数使用格式:
一、concat、concat_ws函数格式
concat格式: concat(参数1,参数2,...参数n),如果要加'分隔符'直接写在 各参数中间 就行 concat_ws格式: concat_ws(分隔符,参数1,参数2,...参数n)文章目录
二、concat、concat_ws函数作用
concat | concat_ws 虽然大体上都属于 字符串拼接的函数,但还是有些细微的差别。 而这细微差别要从 **两个函数连接NULL** 对比三、两者区别
1. 能否拼接INT类型
- concat(1, ‘,’, 2) -> 可以
- concat_ws(1, ‘,’, 2) -> 不可以
得知,concat是可以执行成功的。由此得出 concat可以直接将 INT类型拼接成STRING,STRING拼接成STRING 更不再话下了;而concat_ws不可以直接拼接INT类型,它要求拼接的类型 必须都得是STRING类型,才能在hive执行。
样例(有需要可以自己写几个测试):
concat(1, ',', 2) -> 1,2 (STRING类型)
concat_ws(1, ',', 2) -> 报错
- concat_ws报错:
报错显示concat_ws只支持STRING 或者 array
2. 拼接NULL
- concat(1, null, 2) -> 结果: null
- concat_ws(’,’, ‘1’, null, ‘2’) -> 结果:1,2
得知,concat拼接时,只要参数中有null(有一个null即可),不管有多少不为空的参数,结果都为null;concat_ws遇到参数有null时,则会忽略,不会返回null。
样例(有需要可以自己写几个测试):
concat(1, null, 2) -> null
concat_ws(',', '1', null, '2') -> 1,2