Hive 中 concat() 与 concat_ws() 两者之间的区别

CONCAT(string A/col, string B/col…):
返回输入字符串连接后的结果,支持任意个输入字符串。
concat 函数参数有一个为NULL 返回 NULL

CONCAT only takes primitive arguments:
concat 只接受原始参数

CONCAT_WS(separator, str1, str2,…):
它是一个特殊形式的 CONCAT()。第一个参数剩余参数间的分隔符。
分隔符可以是与剩余参数一样的字符串。
如果分隔符是 NULL,返回值也将为 NULL。
这个函数会跳过分隔符参数后的 任何 NULL空字符串
分隔符将被加到被连接的字符串之间,
如果都会为NULL 什么也不返回。

Argument of function CONCAT_WS must be “string or array”:
concat_ws的参数必须是“string或array

他俩返回的都是string类型

concat 接收的参数 原始类型 都会隐式的把类型转换为 string类型 这也是为什么它返回的
是string类型 也验证它参数内,没必要使用cast()方法,
concat(可以放入任何返回值类型为原始类型的方法)
如:sum()

concat_ws 接收的参数 必须是“string或array” 如果 想放入非 string 的原始类型 或 非 array 的其他 array<原始类型>
则需要使用函数cast(非string原始类型 as string ) :显示强制进行数据类型转换
concat_ws(可以放入任何返回值类型为 string或array 的方法)
如 :collect_set()

你可能感兴趣的:(Hive 中 concat() 与 concat_ws() 两者之间的区别)