00:00
那接下来有一些have当中的基础知识我们需要学习一下啊,那因为我们后边会用到这些内容啊,那其实主要就是have当中的一些函数啊,还有一些与复杂数据类型相关的知识点啊,那其实这里边有一些内容我们在之前就已经使用过了啊呃,所以在这儿呢,我们就当再巩固一下的啊好,那现在我们看第一个内容,第一个内容呢,其实就是一个NVL函数啊,实际上这个函数呢,相对比较简单啊,我们前面就已经用过了,对吧?那现在我们再来,呃,明确一下,那它的使用逻辑是什么样的啊啊,NVL呢,它一共需要接收两个参数啊,那它的使用逻辑什么样的呀?他会判断第一个参数是否为空对吧?如果不为空,那就返回第一个参数的值啊,如果为空,再去判断第二个参数啊,那当然第二个参数如果不为空,那就返回,如果也为空,那没办法,只能返回now了,对吧?啊,这个就是NVL函数的使用逻辑,好,那接下来我们再继续往下走啊,我们看下边,下边呢有几个日期处理函数,实际上啊,日期处理函数还是相对比较重要的啊,因为我们在实际的工作过程当中呢,经常需要去处理各种各样的时间或者是日期。
01:13
啊,好,那现在我们先看一下文档当中给咱们列出来的几个日期处理的函数,那我们先看第一个啊,第一个date form ma,实际上这个函数呢,我们也已经用过了,对吧?那它呢,一共需要接收两个参数,第一个参数呢,诶,是一个呃,时间字符串对吧?那第二参数呢,是一个格式化的字符串啊OK,那比如说这的一个例子什么呀,这例子是不是把这个日期格式化成年月的格式啊,对吧?那它的返回的结果是不是就只有年和月呀?OK,这就是data format函数啊,其实比较简单啊,好,接下来我们再往下走。那这个位置呢,有一个data I的函数对吧?Data I的函数呢,实际上是对日期进行加减操作的一个哎函数啊OK,那接下来我们看一下这个函数具体怎么用啊,那这个函数呢,我们去使用的时候呢,诶一共需要传两个参数,第一个参数就是一个日期,注意是日期啊,那第二个参数呢,是一个int值,实际上这个int值呢是可正也可负的,那如果是正值,那在这儿呢,我们相当于就执行了一个加的操作,对吧?如果是负值呢,那就是减的操作啊,那其实与data I的相对的还有一个函数啊,叫做date s,那其实这两个函数任意一个函数是不是就能够实现加减的功能啊,对吧?啊,那因为后边这个呃,Int值呢是可可负的啊,没错吧,啊好,那这个呢,就是data的函数啊,那我们再往下走,还有一个函数呢,叫做next day函数,那这个函数它的作用是什么呢?来我们直接看例子啊,大家来看一下,那这儿有一个select next day啊完后边呢,一共传了两个参数对吧?第一个参数是一个日期,第二个参数呢,是一个Mo。
02:47
这个Mo是啥呢?Mo呢,实际上是英文的周一的简写对吧?啊,那这个函数它的功能就是返回2020年6月14号的下一个周一的日期。
03:01
啊,那我们可以去看一下这个日期应该是哪一天啊,那咱们去看一下,那咱们打开这个日历去看一下啊好,我们现在找到2020年啊,2020年6月对吧?啊好,大家来一起看一下啊,来看这儿,那这个是不是就是6月14号对吧?那它的下一个周一啊,是不是就是6月15号,没错吧,那所以这个函数返回的结果就是6月15号。啊,是这样的啊,其实这个函数就比较简单了啊好,那现在我们再来明确一下啊,这个函数的使用规则,OK,第一个参数就是日期,这个不用多说啊,其实主要是第二个参数啊,第二个参数我们要传的应该是周几对吧?啊,那当然这写的时候肯定要写英文啊,当然咱们有三种形式可以选择啊,在这我们可以选择写全称啊,或者是写前两个字母,或者是前三个字母啊好,这就是next day这个函数的使用规则啊好,那接下来我们再做一个小练习啊,在这儿呢,让我们获取一下当前周的周一的日期。当前周周一的日期,这个应该怎么获取啊,其实很简单,在这呢,我们是不是嵌套两个函数就可以了,对吧?我们可以先使用next day函数获取下一个周一的日期,然后呢,再使用data I的函数,或者是data sub函数啊,去减一个七对吧?那这样一来咱就能得到当前周周一的日期了。
04:17
OK啊,那实际上这个用法呢,在我们后续的这个开发过程当中,呃,经常会用到,比如说我们去计算一些以周为单位的指标的时候呢,那我们就会用到这种写法了啊,因为你要算的话,是不是得拿到一周的数据啊,对吧?那怎么拿到一周的数据呢?那我们需要拿到它周一的日期,再拿到它周日的日期,那这就是next day这个函数的一个使用场景啊,OK,那接下来我们再看最后一个函数啊,最后一函数呢,叫做last day啊,Last这个函数它的作用是什么呢?其实很简单,是求某月最后一天的日期。啊,咱们直接看例子啊,比如说在这儿last day,我们是不是只需要给他传一个参数就行了,就一个日期,那他就会返回这个日期所在月份的最后一天的日期,比如说六月份,那就是六月30 OK,那这就是last day函数啊,那当然啊,Have当中啊,它的日期函数除了这些还有很多啊,那现在呢,我们打开have的官网,然后找到它介绍函数的这个文档啊,那现在我们往下找一下,找到哪呢?找到这个,呃,Date functions,大家来看这。
05:21
这是不是就是日期函数啊对吧?咱们点过去点会发现呢,这里边其实有很多很多的日期或者是时间相关的函数啊,那这些函数呢,其实我们在以后的工作过程当中呢,都可能会用得到啊,那所以大家呢,最好花一点时间把这里边这些函数呢都去看一看啊,在这儿呢,我们就不再一个一个去看了啊好,那这就是have当中的日期相关的函数啊,那接下来我们再往下走啊,还有一个小知识点啊,就是have当中的复杂数据类型相关的一些内容,这个我们后续也会用到啊,所以在这儿呢,我们一起来总结一下啊,那提到have务当中的复杂数据类型,大家能想到啥呀?不是能想到a ray map。
06:01
对吧?啊,那其实我们常用的也就是这几个啊,那现在呢,我们从以下三个方向总结一下啊,分别是复杂数据类型的定义啊,复杂数据类型的构造以及复杂数据类型的取值啊,那咱从这三个方面去说一下,好,我们打开这个呃,Lime啊,那现在我们先看第一个方面啊,也就是定义啊,那我们先看arra如何定义啊,Arra怎么定义啊,啊其实很简单啊,是不是只需要写一个array,后边再来一个括号,在监括号当中再写上它这个元素的类型就可以了呀。没错吧,那接下来我们继续,那接下来呢,我们再看map啊,Map是如何定义的呀?啊其实map的定义方式呢,诶跟这个瑞差不多,是不是咱需要先写一个map,那后边一个监括号键,括号当中呢,需要分别写上它的K和value的类型。对吧?那接下来我们再看结构体STCT啊,那结构体它是如何声明类型的呢?其实也很简单,首先我们就先写一个CT,然后在后边呢,我们需要分别写上它每一个字段的字段名和字段类型,对吧?字段名与字段类型中间呢,需要用冒号分格,然后两个字段之间呢,需要用逗号风格,比如说咱这儿呢是ID,然后冒号SG string啊,比如说name啊,然后冒号啊,那这个就是ru的结构体的声明啊好,那接下来我们再继续啊,那下来我们看第二一个方面的内容,第二是什么呢?第二个是啊,构造对吧?啊,什么叫构造呢?就是如何得到一个array,如何得到一个map,如何得到一个结构体啊,那这个显然我们需要用到一些函数,对吧?那现在我们去看一下啊,来我们打开这个界面啊,然后找到这个位置,这有一个complex Type Constructors对吧,是不是就是复杂类型的构造器啊,对吧,那接下来咱们点回去看一下啊好,那首先我们看第一个,那第一个就是啥,就是map,然后后边我们传参。
07:48
传的是啥呀?不K1V1 K2V2对吧,那这个呢,实际上就是map的一个构造器啊,那这样一来我们就能够返回一个咱们自己构造的map了啊其实很简单,具体的怎么做呢?啊,就是这么做map,然后面的传上这样的几个参数就可以了啊这是map啊,那接下来我们再继续啊,再往下呢,这儿有啥,那这儿呢,还有一个ruct,然后与之对应的呢,还有一个name的ruct,其实这两个都是哎这个结构体的构造体。
08:16
那那它俩有啥区别呢?我们来看一下啊,第一个CT,那我们是不是只需要传Y61 Y2Y63,也就是我们只需要传值就可以了,对吧,没错吧,那OK,那它的字段名是什么呢?字段名其实是默认的COLOR1 color2 color3啊,这是第一个构造器,那接下来我们再看第二一个啊,第二叫做nameru name呢,就是说我们需要自己给他传这个字段名啊OK,那具体怎么传的,看一下在这儿呢?我们需要传是不是NAME1啊,什么Y61 name2 Y62啊对吧?OK,那这就是啊,Structure结构体的两个构造函数,那我们常用的其实就是下边这个,就是name的这个用的比较多,这个之间呢,其实也已经用过了,对吧?啊好,我们CTRLV给它放在这儿啊好,这是结构体啊,那我们再继续啊,那下面一个是什么?是A的构造器,也就是数组的构造器,那这个就比较简单了,我们只需要给它传上数组当中的每个元素的值,那它就能够给我们返回一个数组啊,OK,那这就是A瑞它的构造器啊,我们也拿过来啊。
09:17
哎,放到这儿。这是瑞。Ay啊好,那现在三个复杂数据类型的构造我们也就讲完了,那接下来呢,我们再看最后一方面的内容啊,就是取值啊,也就是说如何从数组啊,这个map以及结构体当中取值,我们先看AR瑞啊,那如何从数组当中获取一个特定的元素呢?其实很简单,就是根据下标去获取,对吧?比如说这就是一个A类型的字段对吧?那我们后边来一个方括号里边呢,写上下标就能获取对应的元素啊,这是A瑞啊,那接下来我们看map啊,那如何从map里边取值呢?很简单,我们也是需要写一个方括号,然后呢,在方括号里边传上什么呀,传上我们对应的K,那它就会返回这个K对应的Y6。
10:02
OK,这是map,那刷结构体呢,那刷结构体呢,它的取值方式呢,是通过点儿字段名的方式去获取的,比如说NAME1 OK,那这样一来的话呢,它就会给我们返回这个结构体里边内幕一字段对应的值,OK,那这就是取值的内容,那现在我们就把复杂数据类型的定义构造,还有取值讲完了。
我来说两句