IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 第八章、SQL语言学习之函数(字符函数篇) -> 正文阅读

[大数据]第八章、SQL语言学习之函数(字符函数篇)

?哈罗,各位小伙伴大家好,又见面了,我还是那个不吃饱不干活的小尘,欢迎来到本期的SQL语言之字符函数部分,让我们一起进入知识的海洋吧~???

首先,这次进入的是函数这一个新的篇章,所以要先导入一下,并且简单说一下函数的分类和调用,小伙伴们不要不耐烦哦,那咱们开始吧!

一、引入

(1)java中的方法

概念

这里讲的函数类似于java中讲的方法。将一组逻辑语句封装在方法体中,对外暴露方法名。

将我们实现某个功能的一组逻辑语句,封装到了方法中。对外暴露一个公开的名字。回头再想用这些逻辑语句,只需要调用这个方法名就可以了。

好处

1、隐藏实现细节。

2、提高代码重用性。下次再用这些语句,就不需要再写一遍了,直接调用方法名即可。

(2)SQL中函数的调用

语法

SELECT? ?函数名(实参列表)【 FROM? ?表 】;

问:什么时候要加? FROM? ?表

函数中的参数用到表中的字段的时候要加 FROM? 表 。如果没有用到表中字段,就不需要加。

执行过程

?相当于我们在调用该函数,把该函数的逻辑语句完全执行完,最终将它的返回值显示出来。

问:在调用的时候,最关键的是什么?

1、该方法叫什么(函数名)

2、这个方法是干什么的(函数功能)

(3)SQL中函数的分类?

1、单行函数

做处理使用。

传过去一个参数,最终一定会有一个返回值。

如:CONCAT? 、LENGTH?、IFNULL

2、分组函数(统计函数、聚合函数、组函数)

做统计使用。

给它传进去一组值,最终返回一个值。

二、函数具体分类

(1)字符函数

? ?用于对字符型的处理。传入的参数类型是字符型。

1、LENGTH

该函数用于获取参数值字节个数。

敲入函数并打上左半边括号,就会显示它对应参数应该放什么。

认识:

如图,我们可以知道,LENGTH函数里面放的是一个字符(str)。

如果我们在里面放入 'john',在这里不需要加 FROM? 表名 。

看一下执行结果:

如果我们在里面放中文呢?

我们可以看到,结果是15。

因为一个字母是一个字节,而一个汉字是三个字节。但这也要看字符集。

不妨来看一下该客户端是什么字符集:

SHOW? VARIABLES? LIKE? '%char%'

UTF8字符集下,默认一个英文字母占一个字节,一个汉字占三个字节。

GBK字符集下,默认一个英文字母一个字节,一个汉字两个字节。?

2、CONCAT

该函数用于拼接字符串。

认识:

如图,我们可以知道,CONCAT函数里面放的是需要连接的字符串。

?

如果我想把last_name和first_name连在一起,中间用一个下划线隔开:

SELECT
	CONCAT(last_name,'_',first_name)
FROM
	employees;

看一下执行结果:

?

3、upper、lower

改变大小写

认识:

?如图,我们可以知道,UPPER函数里面放的是字符型的值

如图,我们可以知道,LOWER函数里面放的也是字符型的值。?

那两个函数有什么用呢?

<1>?和第一个举的例子一样,我们把'john'放入试试。

发现放在UPPER函数中john变成了大写

而LOWER函数却没有发应:

<2>?如果是大写的JOHN呢?

发现放在UPPER函数中JOHN不变。

?而放在LOWER函数中变成了小写

?

<3>?那如果是这个‘jOhN’呢?

我们发现在UPPER函数将字符都变成的是大写

?

而LOWER函数将字符都变成的是小写。

?

?总结

UPPER函数将字符都变成的是大写

UPPER函数:如果本来就是大写,那就不用变化;如果有大写有小写,那小写的会跟着变化。

LOWER函数将字符都变成的是小写。

LOWER函数:如果本来就是小写,那就不用变化;如果有大写有小写,那大写的会跟着变化。

案例、

将姓变大写,名变小写,然后拼接。

代码:

SELECT
	CONCAT(UPPER(last_name),LOWER(first_name)) AS 姓名
FROM
	employees;

执行结果:?

?

在上面我们也可以看见,CONCAT和UPPER、LOWER函数是嵌套使用的。

说明函数是可以嵌套调用的,也就是某个函数的返回值,可以充当另一个函数的参数。

4、substr? (substring)

截取字符

认识:

?4代表什么?

代表是4个函数重载。

方法重载:名字一样,参数列表不一样。即同一个函数名可以放不同数量的参数。

在这儿第一个放的是一个字符(str),第二个放的是位置(pos)。

<1> 案例一、

把“孙悟空大闹天宫”的“大闹天宫”给返回。

函数第一个参数要写上“孙悟空大闹天宫”,第二个要写上“大闹天宫”的位置(索引),即4。

注意:索引从1开始。

? ? ? ? ? ?截取是从这个索引开始,后面所有的字符。

代码:

SELECT
	SUBSTR('孙悟空大闹天宫',4) AS out_put;

执行结果:?

?

<2> 案例二、

把“孙悟空大闹天宫”的“孙悟空”给返回。

代码:

SELECT
	SUBSTR('孙悟空大闹天宫',1,3) AS out_put;

?

执行结果:

总结?

使用两个参数,截取从指定索引处后面的所有字符。(如案例一)

使用三个参数,截取从指定索引处指定字符长度的字符。(如案例二)

如果以后没有特殊说明,一般都是指字符长度。目前指字节的只有“ LENGTH?”。

<3> 案例三、

姓名中首字符大写,其他字符小写,用下划线拼接,显示出来。

代码:

SELECT
	CONCAT(UPPER(SUBSTR(last_name,1,1)),'_',LOWER(SUBSTR(last_name,2))) AS out_put
FROM
	employees;

执行结果:

?部分解析:

5、instr?

返回子串(substr)在原字符串(str)里面的起始索引。

认识:

如图,我们可以知道,INSTR函数里面有两个参数。

第一个参数是输入的字符串,第二个参数是截取的字符串(子串)。

举例、

?代码:

SELECT
	INSTR('新航路开辟','开辟') AS out_put;

执行结果:

?

如果“开辟”这个子串出现了很多遍,那么会显示什么?

我们来看看:

如图,我们可以看见,有两处出现了“开辟”。

分别出现的位置是“2”和“6”,结果显示的是“2”。

说明显示的是第一次出现的子串。?

那如果没有要求显示的子串呢?

我们可以看见,若没有要求显示的子串,执行结果就是0。

总结

?STR函数返回子串第一次出现的索引。

如果找不到,就返回0。

6、trim

认识:

<1> 我们在函数里面放一个大的字符串:

?

?这个看不出来什么,前面的空格像是没有了,后面的空格又像有似的。

其实不是的,是因为单元格的原因,单元格较长。

我们可以加上LENGTH函数来看看长度。

如果只返回字符串的字节长度,就是3*4=12。即没有算空格长度。

?如图,说明该函数去掉了前后空格。

<2> 那如果我们里面写的不是空格呢?

?如图,我们若是想去掉字母a,该怎么办呢?

我们可以在输入的字符前面加上? 'a' from,给它规定一下,这次要去掉的是a。

?可以看见,前后的a都去掉了。

TIRM函数去掉的就是前后的,中间会被认为是有效的字符。

<3> 如果上面我们去掉的是aa呢??

?

我们可以看见,有一个a没有被去掉?
因为它会默认将aa当做一个单元,“细嗅”前面有五个a,就会剩下一个a(没有a与它搭配了),因为不是aa。

7、lpad

用指定的字符实现左填充指定长度。

认识:

?如图我们可以知道,LPAD函数里面的参数有三个。

?如图我们可以知道,“三千世界”占了四个位置,不够10个,左边会以*填充。

*填充三千世yong 界,总长度是10

如果指定长度小于字符长度呢?

如图,说明最终长度是和第二个参数,即总共的字符长度一致的。

如果输入的字符长度超过了指定的长度,就会从右边截断。?

8、rpad

用指定的字符实现右填充指定长度。

认识:

?

我们来举个例子:

可以看见,是在右边进行填充的,总长度为12。

9、replace

用于替换。

认识:

?我们可以看到,REPLACE函数有三个参数:输入的字符、被替换的字符、替换的字符。

举个例子:

?我们可以看到,第一个输入字符的“沙僧”都被换成了“猴哥”。

?

(2)数学函数

? ?传入的参数类型是数值型。

(3)日期函数

? ?传入的参数类型是日期型。

(4)其它函数

(5)流程控制函数

? ?可以实现一些分支结构。

好啦~

我们这次说的主要是字符函数,因为篇幅原因,后面的函数要在后面讲解喽~

欢迎继续关注后续内容,原创不易,希望多多支持。

咱们下次不见不散~

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-09 16:21:04  更:2021-10-09 16:21:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:16:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码