hive数据库||的用法、hive数据库字符串拼接、concat函数、concat_ws函数 ...

海哥  金牌会员 | 2025-1-15 23:04:26 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 889|帖子 889|积分 2667

本文讲解一下hive数据库中字符串拼接的几种方式。
一、||字符勾通接符

   ||操作符要求所有到场连接的操作数都是字符串范例。
实测后发现所有到场连接的字段必须有一个是字符串string范例,若所有的都非字符串范例,则会报错。
  示例如下:
  1. 1.查询时拼接两个字段(ps: 需要保证两个字段都是字符串类型,否则可能会报错)
  2. select name||class from user;
  3. select 'Hello'||' World'
  4. -- || 连接多个字段
  5. select 'Hello'||' World'||'你好'
  6. select null||'hello'  -- hello  当空与字符串一起拼接时,返回字符串
复制代码
1.1、常见报错

若||操作符双方全都非string范例,则会报错TProtocolException: Required field ‘type’ is unset
  1. org.apache.thrift.protocol.TProtocolException:
  2. Required field ‘type’ is unset! Struct:TPrimitiveTypeEntry(type:null,
  3. typeQualifiers:TTypeQualifiers(qualifiers:{characterMaximumLength=}))
复制代码
办理方法拜见:《https://blog.csdn.net/weixin_49114503/article/details/142853037》
报错示例:
  1. select  1||1  -- 因为两边都不是string类型,所以会报错
  2. select  1.45||3 -- 因为两边都不是string类型,所以会报错
复制代码
精确示例:
  1. select 'hello'||' World'
  2. select 'hello'|| 1.00   -- ||操作符两边必须有一个是字符串类型
复制代码
二、concat(str1,str2,str3,…)

   concat(str1,str2,str3…): 连接参数的函数,返回结果为连接参数的字符串。如果有参数为NULL,则忽略该参数。
  留意:传入参数不能全黑白字符串范例,否则会报错
语法如下:
  1. 可以连接多个字符
  2. concat(string:VARCHAR,string:VARCHAR*)
复制代码
示例如下:
  1. -- concat连接多个字段
  2. SELECT CONCAT('Hello', ', ', 'World') FROM your_table;
  3. -- concat嵌套连接多个字段
  4. SELECT CONCAT(CONCAT('Hello', ', '), CONCAT('World', '!')) FROM your_table;
  5. -- 若有参数为null, 则忽略该参数,其他的进行拼接
  6. select concat('a',null,'c')  --- ac   
  7. -- concat函数中必须有一个是字符串类型,否则会报错。 所以尽量都传入字符串类型,虽然下列的方式不会报错
  8. select concat('1',2)  --- 12
  9. -- 若所有的参数都是非字符串类型,则抛错
  10. select concat(1,2)  --- 抛错Required field ‘type’ is unset!
复制代码
三、concat_ws(‘分隔符’,str1,str2,…)

concat()的一个特殊形式,表示concat with separator,两个参数之间加上特定的分隔符。返回的是用指定分隔符连接参数的字符串。如果分割符为null,则返回null,参数为null,则忽略该参数。
留意:concat_ws所有参数必须都是字符串范例,不能有数字范例
示例如下:
  1. select concat_ws('/','2018','12','19')----2018/12/19
  2. -- 若参数为null, 则忽略该参数
  3. select concat_ws(':','22','47',null)----22:47
  4. -- 若分隔符为null, 则返回null
  5. select concat_ws(null,'22','47')----null
  6. -- concat_ws的参数必须是string类型,否则会报错
  7. select concat_ws(':','22',47)----报错  [42000][10632] COMPILE FAILED:Semantic error:[Error 10632] Argument 3 of function CONCAT_WS must be 'string or array <string>', but 'int' was found.
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

海哥

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表