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<string>”:
concat_ws的参数必须是“string或array<string>”

他俩返回的都是string类型

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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值