hive中得字符串连接函数concat,concat_ws,group_concat

本文深入探讨了contact(), contact_ws()及group_concat()三种字符串连接函数的特性与应用场景。contact()用于连接多个字符串,若其中一个为null则结果为null;contact_ws()通过指定分隔符连接字符串;group_concat()则用于将分组中的值进行连接。

contact() 连接多个字符串,如果其中有一个字符串为Null,则最后结果为null

contact_ws() 第一个参数是分隔符,即多个字符串要使用该分隔符连接起来

group_concat() 该结果由分组中的值连接而成

Hive中,`concat_ws`函数用于将多个字符串或数组元素连接起来,使用指定的分隔符分隔。其使用语法为:`CONCAT_WS(separator,str1,str2,…) `,`CONCAT_WS()`代表`CONCAT With Separator` ,是`CONCAT()`的特殊形式。第一个参数是其它参数的分隔符,分隔符的位置放在要连接的两个字符串之间,分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 `NULL`,则结果为 `NULL`。函数会忽略任何分隔符参数后的 `NULL` 值,但不会忽略任何空字符串 [^2]。 以下是一些`concat_ws`函数的使用例子: 1. **连接字符串**: ```sql -- 输出a|b SELECT concat_ws("|", 'a', 'b'); ``` 此示例直接将两个字符串 `'a'` 和 `'b'` 用分隔符 `'|'` 连接起来 [^1]。 2. **连接数组元素**: ```sql -- 输出a|b SELECT concat_ws("|", array('a', 'b')); ``` 该示例将数组 `array('a', 'b')` 中的元素用分隔符 `'|'` 连接起来 [^1]。 3. **从表中连接字段**: ```sql SELECT CONCAT_WS('_',id,name) AS con_ws FROM info LIMIT 1; -- 假设表info中有id和name字段,输出结果例如:+----------+ -- | con_ws | -- +----------+ -- | 1_BioCyc | -- +----------+ ``` 这里从 `info` 表中选取 `id` 和 `name` 字段,用 `'_'` 作为分隔符将它们连接起来,并将结果命名为 `con_ws` [^2]。 4. **拼接包含 `NULL` 值的情况**: ```sql -- 输出a_c_v_d SELECT concat_ws('_','a','c','v','d'); -- 输出c_v_d SELECT concat_ws('_',null,'c','v','d'); -- 输出c_d SELECT concat_ws('_',null,'c',null,'d'); -- 输出NULL SELECT concat_ws(null,'a','c','v','d'); -- 输出c SELECT concat_ws('_',null,'c',null); -- 输出空 SELECT concat_ws('_',null,null,null); ``` 从这些示例可以看出,当分隔符为 `NULL` 时,结果为 `NULL`;函数会忽略分隔符参数后的 `NULL` 值 [^3]。 5. **从表中拼接字段并处理 `NULL` 值**: ```sql -- 假设test1表中有abc、def、gh字段,输出abc_def_gh SELECT concat_ws('_', abc, def, gh) FROM test1; -- 假设test1表中有abc、def字段,输出abc_def SELECT concat_ws('_', abc, def, null) FROM test1; ``` 这些示例展示了从表中选取字段进行拼接,并处理 `NULL` 值的情况 [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值