Day_02

作者: 狮子贾 | 来源:发表于2019-12-10 13:03 被阅读0次

今天主要是对业务进行了解,一遍进行后期代码的编写任务:

讲几个项目中要用到的函数,之前没有见过的

1.nvl

nvl(statement,statement2)

这个函数的作用是,如果statement的值是null的话,则函数的输出值为statement2

如果statement的值不是null的话,则函数的输出值为statement

做人千万不要逃避问题

2.str_to_map(字符串参数, 分隔符1, 分隔符2)

这个也是第一次见,之前根本没有用到过

就是将一个字符串进行两次切分,第一次切分形成一个K-V键值对,第二次再次进行切分,将第一个键值对切分成最终的键值对,举个例子,从别人的博客上盗的

同时复习一下concat的用法,很简单就是字符串的拼接

create table table_a

(column1 string not null,

column2 map notnull)

简单的创建一个表,其中有一个字段的类型是map型的

然后就开始进入正题:

insert overwrite table_a

select concat('col1:'+b.id+'&col2:'+b.name+'&col3:'+b.age)  as column1 comment '原始字段',

str_to_map(concat('&col1:'+b.id+'&col2:'+b.name+'&col3:'+b.age) ,'&',':') as column2 '经过处理的map值'

from table_b as b

这个时候table_a中就有了相关的数据

这个时候我们就可以直接取值

select 

column2,

column2['col1']as col_example

from table_a;

还有什么,奥就是case when 后面不应该是表达式,我想着表达式写成聚合函数,答案是我脑袋秀逗了,不能;

3. cast的用法

cast就是一个转换字符类型的小函数

用处不大也不小,比如下面这个案例

SELECT name, salary FROM employees

WHERE cast(salary AS FLOAT) = 100.0;

啥意思啊,就是在where条件语句中说必须满足一个条件,什么条件,就是salary通过cast转化为float型后必须要等于100.0

这样salary将会显示的转换成float。如果salary是不能转换成float,这时候cast将会返回NULL!

还可以嵌套转着用

SELECT (cast(cast(a as string) asdouble)) from src;

有效的转换结果

cast(date as date)        返回date类型

cast(timestamp as date)      timestamp中的年/月/日的值是依赖与当地的时区,结果返回date类型

cast(string as date)           如果string是YYYY-MM-DD格式的,则相应的年/月/日的date类型的数据将会返回;但如果string不是YYYY-MM-DD格式的,结果则会返回NULL。

cast(date as timestamp)         基于当地的时区,生成一个对应date的年/月/日的时间戳值

cast(date as string)             date所代表的年/月/日时间将会转换成YYYY-MM-DD的字符串。

然后下面来说应该是今天的最后一个知识点了

就是MySQL中的UNIX_TIMESTAMP函数有两种类型供调用

1  无参数调用:UNIX_TIMESTAMP() 

返回值:自'1970-01-01 00:00:00'的到当前时间的秒数差  1970-01-01 00:00:00是个什么鬼  是计算机元年

例子:SELECT UNIX_TIMESTAMP() from table_example => 1339123415

2  有参数调用:UNIX_TIMESTAMP(date)

其中date可以是一个DATE字符串,一个DATETIME字符串,一个TIMESTAMP或者一个当地时间的YYMMDD或YYYMMDD格式的数字

返回值:自'1970-01-01 00:00:00'与指定时间的秒数差

举例说明:

DATE字符串格式:(日期类型)

SELECT UNIX_TIMESTAMP(‘2012-06-08’)     => 1339084800

SELECT UNIX_TIMESTAMP(CURRENT_DATE())  =>1339084800

注:CURRENT_DATE ()的返回值是一个DATE字符串格式

以下几种格式返回的结果相同:

SELECT UNIX_TIMESTAMP('20120608');

SELECT UNIX_TIMESTAMP('2012-6-8');

SELECT UNIX_TIMESTAMP('2012-06-08');

结果都是:1339084800

相关文章

  • day_02

    今天周五了,阿斌和部门的同事出去喝酒,峰哥洗了澡梳了头找高中同学撸串去了,而我加班回来之后煮了碗面--五谷道场,这...

  • Day_02

    今天主要是对业务进行了解,一遍进行后期代码的编写任务: 讲几个项目中要用到的函数,之前没有见过的 1.nvl nv...

  • day_02

    每天一句:你想人前显贵,必得背后受罪。一、服务器相关1、服务器的分类: 远程服务器(ip地址):别名:外网服务器、...

  • day_02 python基础语法

    1.常用快捷键方式 control + / ----- 单行注释control + s ----- 保存con...

  • SpringBoot(简称SB) Day_02

    通过helloSpringBoot程序,我们已经发现了SpringBoot的简便快捷之处,这种简便之处来源于SB的...

  • Day_02 Python 数据类型

    sublime Text 快捷键 常用的快捷方式:1.单行注释Ctrl + / ---单行注释2.Ctrl + S...

  • Day_02 c++数据处理基础

    1.数据类型基本数据类型可以分为两个大类,即整数和浮点数。 整型数据分为: 浮点数据分为: 2.c++提供了什么措...

  • 2019-03-02 C语言学习——day_02

    printf里面总会是 printf(“%_x_”,变量); 这里总会有一个变量,这个变量x可以是f,d等等,去控...

  • 计算机网络Day_02(物理层)

    物理层 基本概念: 物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。 主要任务:...

网友评论

      本文标题:Day_02

      本文链接:https://www.haomeiwen.com/subject/xejbgctx.html