当前位置: 首页 > article >正文

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

文章目录

  • 一、||字符串连接符
    • 1.1、常见报错
  • 二、concat(str1,str2,str3,…)
  • 三、concat_ws('分隔符',str1,str2,…)

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

一、||字符串连接符

||操作符要求所有参与连接的操作数都是字符串类型。
实测后发现所有参与连接的字段必须有一个是字符串string类型,若所有的都非字符串类型,则会报错。

示例如下:

1.查询时拼接两个字段(ps: 需要保证两个字段都是字符串类型,否则可能会报错)
select name||class from user;

select 'Hello'||' World'

-- || 连接多个字段
select 'Hello'||' World'||'你好'

select null||'hello'  -- hello  当空与字符串一起拼接时,返回字符串

1.1、常见报错

||操作符两边全都非string类型,则会报错TProtocolException: Required field ‘type’ is unset

org.apache.thrift.protocol.TProtocolException: 
Required field ‘typeis unset! Struct:TPrimitiveTypeEntry(type:null, 
typeQualifiers:TTypeQualifiers(qualifiers:{characterMaximumLength=}))

解决方法参见:《https://blog.csdn.net/weixin_49114503/article/details/142853037》

报错示例:

select  1||1  -- 因为两边都不是string类型,所以会报错
select  1.45||3 -- 因为两边都不是string类型,所以会报错

正确示例:

select 'hello'||' World'
select 'hello'|| 1.00   -- ||操作符两边必须有一个是字符串类型

二、concat(str1,str2,str3,…)

concat(str1,str2,str3…): 连接参数的函数,返回结果为连接参数的字符串。如果有参数为NULL,则忽略该参数。

注意:传入参数不能全是非字符串类型,否则会报错

语法如下:

可以连接多个字符
concat(string:VARCHAR,string:VARCHAR*)

示例如下:

-- concat连接多个字段
SELECT CONCAT('Hello', ', ', 'World') FROM your_table;

-- concat嵌套连接多个字段
SELECT CONCAT(CONCAT('Hello', ', '), CONCAT('World', '!')) FROM your_table;

-- 若有参数为null, 则忽略该参数,其他的进行拼接
select concat('a',null,'c')  --- ac   

-- concat函数中必须有一个是字符串类型,否则会报错。 所以尽量都传入字符串类型,虽然下列的方式不会报错
select concat('1',2)  --- 12


-- 若所有的参数都是非字符串类型,则抛错
select concat(1,2)  --- 抛错Required field ‘type’ is unset!

三、concat_ws(‘分隔符’,str1,str2,…)

concat()的一个特殊形式,表示concat with separator,两个参数之间加上特定的分隔符。返回的是用指定分隔符连接参数的字符串。如果分割符为null,则返回null,参数为null,则忽略该参数。

注意:concat_ws所有参数必须都是字符串类型,不能有数字类型

示例如下:

select concat_ws('/','2018','12','19')----2018/12/19

-- 若参数为null, 则忽略该参数
select concat_ws(':','22','47',null)----22:47

-- 若分隔符为null, 则返回null
select concat_ws(null,'22','47')----null

-- concat_ws的参数必须是string类型,否则会报错
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.

http://www.kler.cn/news/343340.html

相关文章:

  • Patroni配置3-环境变量配置设置
  • 【操作系统】四、文件管理:1.文件系统基础(文件属性、文件逻辑结构、文件物理结构、文件存储管理、文件目录、基本操作、文件共享、文件保护)
  • QT C++ 软键盘/悬浮键盘/触摸屏键盘的制作
  • leetcode:反转字符串中的单词III
  • 2024年秋季学期期中考试成绩查询系统-老师制作工具
  • ECharts图表图例5
  • C++——反向迭代器
  • 【Linux探索学习】第四弹——Linux权限管理详解:理解用户、组和权限之间的关系
  • leetcode 131 分割回文串
  • SQL调优指南与高级技巧:打造高效数据库查询
  • Leetcode 删除链表倒数第 N 个节点
  • 【Golang】Go语言Seeker接口与文件断点续传实战
  • 【Linux实践】实验七:vi编辑器的使用
  • 在 TypeScript 中判断两个类型相等的挑战
  • 从分布 P 中抽取随机变量 X的期望值
  • 七、Python基础语法(判断语句 上)
  • Java Stream流操作的不同分类
  • 【系统架构设计师】案例专题六(8大系统架构设计之1): 信息系统架构设计考点梳理
  • SSD1306驱动芯片学习
  • 自动驾驶高频面试题及答案