2023.11.16 hivesql之条件函数,case when then

目录

一.Conditional Functions条件函数

二.空值相关函数 

三:使用注意事项

3.1 then后面不能接子查询

3.2 then后面只能是结果值

3.3 then后面能不能接两列

四.用于建表新增字段使用场景


一.Conditional Functions条件函数

-- 演示条件函数
-- if(条件判断,true的时候执行此处,false的时候执行此处)
select if(10 > 5, '真', '假'); --如果为true,执行前面的.如果为false,执行后面的
select if(10 < 5, '真', '假');--条件转换函数格式1: CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END

演示:

selectcase 7 --拿着7这个结果,依次在下面各个对比when 1 then '周一上班'when 2 then '周二上班'when 3 then '周三上班'when 4 then '周四上班'when 5 then '周五上班'when 6 then '周六休息'when 7 then '周日休息'else '老弟啊,你是外星人吗?'end;-- 条件转换函数格式2:CASE  WHEN a==b THEN a==c [WHEN a==d THEN a==e]* [ELSE f] END
selectcasewhen 7==1 then '周一上班'when 7==2 then '周二上班'when 7==3 then '周三上班'when 7==4 then '周四上班'when 7==5 then '周五上班'when 7==6 then '周六休息'when 7==7 then '周日休息'else '老弟啊,你是外星人吗?'end;

二.空值相关函数 

-- 演示null相关函数
-- isnull(数据) 为空: true 不为空:false
select isnull(null); -- true-- isnotnull(数据) 不为空: true 为空:false
select isnotnull('斌子'); -- true-- nvl(数据,前面的数据是null的时候执行此处): 如果数据不为空打印数据,为空打印第二个参数
select nvl('binzi','666');
select nvl(null,'666');-- coalesce(v1,v2...): 从左到右依次查找,返回第一个不是null的值,如果找到最后都是null,就返回null
-- 常用于判断某些字段是否是null的
select COALESCE(null,11,22,33);-- 11
select COALESCE(null,null,22,33);--22
select COALESCE(null,null,null,33);--33
select COALESCE(null,null,null,0);--0
select COALESCE(null,null,null,null);--null

三:使用注意事项

3.1 then后面不能接子查询

 then的后面不能接查询语句。

3.2 then后面只能是结果值

then的后面只能接具体的值,不能接逻辑表达式

3.3 then后面能不能接两列

then的后面不能接两列的值,如果想要接两列的值,就必须写两遍case when then逻辑。

 

四.用于建表新增字段使用场景

现有一张订单表,其中有支付类型,支付方式,订单状态,这三个字段是使用0,1,2,3数字来定义状态的

 在加载完文件后,表的几个字段内容如下

在原表中,用0,1,2,3这样的数字来确认状态,不方便查看,因此我们可以使用case条件判断,

when 数字=0,1,2 ,then内容显示对应的中文状态,来方便我们查看

create table dw1_orders as
selectorderid,orderno,shopid,userid,orderStatus,  --这里如果不写原来的字段名,那么新增的中文列就替代原来的这列casewhen orderStatus = -3 then '用户拒收'when orderStatus = -2 then '未付款的订单'when orderStatus = -1 then '用户取消'when orderStatus = 0 then '待发货'when orderStatus = 1 then '配送中'when orderStatus = 2 then '用户确认收货'end as  orderStatus_cn,  -- 相当于新增了一列goodsmoney,delivermoney,totalmoney,realtotalmoney,payType,casewhen payType = 0 then '未知'when payType = 1 then '支付宝'when payType = 2 then '微信'when payType = 3 then '现金'when payType = 4 then '其他'end  as paytype_cn,isPay,casewhen isPay = 0 then '未知'when isPay = 1 then '支付宝'when isPay = 2 then '微信'when isPay = 3 then '现金'when isPay = 4 then '其他'end as isPay_cn,username,useraddress,userphone,createtime,paytime,totalpayfee
from orders;

创建的表效果如下,在原来的0,1,2旁边新增了一列对应的中文,方便了我们查看

也可以用overwrite操作来覆盖原来的表,但我们是新增了三列,所以列数和原表对不上,这里就当做新表了.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/178452.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何检查 Docker 和 Kubernetes 是否可以访问外部网络,特别是用于拉取镜像的仓库?

要检查 Docker 和 Kubernetes 是否可以访问外部网络&#xff0c;尤其是用于拉取容器镜像的仓库&#xff0c;您可以按照以下步骤进行&#xff1a; 1. 检查节点的网络连接 首先&#xff0c;您需要确保 Kubernetes 节点能够访问外部网络。这可以通过在节点上执行 ping 命令来测试…

LeetCode(9)跳跃游戏【数组/字符串】【中等】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 55. 跳跃游戏 1.题目 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回…

HTML5学习系列之实用性标记

HTML5学习系列之实用性标记 前言实用性标记高亮显示进度刻度时间联系信息显示方向换行断点标注 总结 前言 学习记录 实用性标记 高亮显示 mark元素可以进行高亮显示。 <p><mark>我感冒了</mark></p>进度 progress指示某项任务的完成进度。 <p…

Linux安装jdk1.8教程(服务器可以访问网络)

文章目录 前言创建安装目录查看是否安装过下载解压配置环境变量查看是否安装成功 前言 本教程介绍了一种快捷的jdk1.8安装方法。 创建安装目录 mkdir -p /opt/software // 这是我自己的安装目录&#xff0c;根据自己的习惯确定查看是否安装过 rpm -qa | grep -i jdk需要注意…

java springboot application中设置正确的数字密码连不上数据库问题解决

说一个真实存在的问题 就是 有时候 我们在配置文件中设置了正确的数据库密码 但是 就是连不上 比如 我在application.yml配置文件中配置了一个数据库密码 这里 我们写的是 0127 然后 我们在程序中 读取并打印出来 看看系统拿到的到底是个什么&#xff1f; 但怪了 系统给我们…

无需代码RSS订阅有内容新增自动在滴答创建任务

数环通让您可以通过不到几分钟的时间即可实现RSS订阅与滴答清单的对接与集成&#xff0c;从而高效实现工作流程自动化&#xff0c;降本增效&#xff01; 1.产品介绍 RSS订阅是数环通的内置应用&#xff0c;很多用户通过RSS订阅来收集自己在各大平台上看的内容&#xff0c;当R…

【数据结构—— 栈的实现(数组栈)】

数据结构—— 栈的实现 一.栈1.1栈的概念及结构 二.栈的实现2.1头文件的实现——&#xff08;Strck.h&#xff09;2.2 源文件的实现——&#xff08;Strck.c&#xff09;2.3 源文件的实现——&#xff08;test.c&#xff09; 三.栈的实际数据测试展示3.1正常的后进先出方式3.2 …

【图像分类】【深度学习】【Pytorch版本】 GoogLeNet(InceptionV3)模型算法详解

【图像分类】【深度学习】【Pytorch版本】 GoogLeNet(InceptionV3)模型算法详解 文章目录 【图像分类】【深度学习】【Pytorch版本】 GoogLeNet(InceptionV3)模型算法详解前言GoogLeNet(InceptionV3)讲解Factorized Convolutions卷积分解InceptionV3结构ⅠInceptionV3结构ⅡInc…

2020年五一杯数学建模C题饲料混合加工问题解题全过程文档及程序

2020年五一杯数学建模 C题 饲料混合加工问题 原题再现 饲料加工厂需要加工一批动物能量饲料。饲料加工需要原料&#xff0c;如加工猪饲料需要玉米、荞麦、稻谷等。加工厂从不同的产区收购了原料&#xff0c;原料在收购的过程中由于运输、保鲜以及产品本身属性等原因&#xff…

Spring中的BeanFactory和ApplicationContext的区别

我用一个例子去测试BeanFactory和ApplicationContext的区别 首先建立一个bean public class User { //声明无参构造&#xff0c;打印一句话&#xff0c;监测对象创建时机public User(){System.out.println("User对象初始化");} } 然后再建立测试类 ublic class User…

【Linux】Linux 中关于 MySQL 的相关操作

Linux 中关于 MySQL 的相关操作 Linux 系统与 MySQL 数据库是目前互联网开发中最为流行的组合之一。Linux 作为开源的操作系统&#xff0c;具有运行效率高、安全性好等优点&#xff1b;而 MySQL 作为开源的数据库&#xff0c;具有运行速度快、可靠性高等特点。 &#xff08;1&…

HarmonyOS 学习记录

时光荏苒,岁月如梭,韶华不负,未来可期。转眼间已经30岁了&#xff0c;学习的重要性不言而喻&#xff0c;在接下来的日子里记录下自己学习HarmonyOS的过程。增加一下知识储备&#xff0c;防患于未然嘛 不得不说华为的开发文档写的不错&#xff0c;开发工具直接安装后自动配置环境…