0
点赞
收藏
分享

微信扫一扫

11.使用数据处理函数

东林梁 2022-07-18 阅读 27

学习目标:

  1. 什么是函数
  2. mysql支持何种函数
  3. 如何使用这些函数

一.函数

SQL支持利用函数来处理数据。 函数一般是在数据上执行的,它给数据的转换和处理提供了方便。 能运行在多个系统上的代码称为可移植的( portable)。 而函数的可移植性却不强。几乎每种主要的DBMS的实现都支持其他实现不支持的函数,而且 有时差异还很大。 如果你决定使用函数,应该保证做好代码注释,以便以后你(或其他人)能确切地知道所编写SQL代码的含义。

二.使用函数

大多数SQL实现支持以下类型的函数。  用于处理文本串(如删除或填充值,转换值为大写或小写)的文 本函数。  用于在数值数据上进行算术操作(如返回绝对值,进行代数运算)的数值函数。  用于处理日期和时间值并从这些值中提取特定成分(例如,返回两个日期之差,检查日期有效性等)的日期和时间函数。  返回DBMS正使用的特殊信息(如返回用户登录信息,检查版本细节)的系统函数

1.文本处理函数

a.将prod_name全部转为大写(upper)

select prod_name,upper(prod_name) as upper_prod_name ,prod_id from products

order by prod_id; 格式:select 列名1,upper(列名2),列名3 from 表名 order by 列名3;upper()将文本转换为大写

11.使用数据处理函数_mysql

11.使用数据处理函数_mysql_02

11.使用数据处理函数_mysql_03

b.SOUNDEX是根据发音,找出相似文本

ustomers表中有一个顾客其联系名为Y.Lee。select cust_name,cust_contact from customers

where cust_contact = 'Y lie';

11.使用数据处理函数_mysql_04

但如果这是输入错误,此联系名实际应该是Y.Lie,怎么办?使用soundex函数: select cust_name,cust_contact from customers where soundex(cust_contact) = soundex('Y lie');

WHERE子句使用Soundex()函数来转换cust_contact列值和搜索串为它们的SOUNDEX值。因为Y.Lee和Y.Lie发音相似,所以它们的SOUNDEX值匹配 。

11.使用数据处理函数_mysql_05

2.日期和时间处理函数

日期和时间采用相应的数据类型和特殊的格式存储,以便能快速和有效地排序或过滤,并且节省物理存储空间。日期和时间函数总是被用来读取、统计和处理这些值。

11.使用数据处理函数_mysql_06

首先需要注意的是MySQL使用的日期格式。无论你什么时候指定一个日期,不管是插入或更新表值还是用WHERE子句进行过滤,日期必须为格式yyyy-mm-dd,这是首选的日期格式。因此, 2005年9月1日,给出为2005-09-01。虽然其他的日期格式可能也行,但这是首选的日期格式,因为它排除了多义性(如,04/05/06是2006年5月4日或2006年4月5日或2004年5月6日或……)。

基本日期:order_date的数据类型为datetime。这种类型存储日期及时间值。

a.where order_date = '2005-09-01'

select cust_id,order_num from orderswhere order_date = '2005-09-01';

11.使用数据处理函数_mysql_07

MySQL仅将给出的日期与列中的日期部分进行比较,而不是将给出的日期与整个列值进行比较。 为此,必须使用Date()函数。 Date(order_date)指示MySQL仅提取列的日期部分,更可靠的

b.where date(order_date) = '2005-09-01';(date函数)

select cust_id,order_num from orderswhere date(order_date) = '2005-09-01';格式:select 列名1,列名2 from 表名 where date(列名3) = '2005-09-01';

11.使用数据处理函数_mysql_08

这样,如果由于某种原因表中以后有日期和时间值,你的SQL代码也不用改变。当然,也存在一个Time()函数,在你只想要时间时应该使用它。Date()和Time()都是在MySQL 4.1.1中第一次引入官网:​​https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html​​​个人:​​https://www.cnblogs.com/poloyy/p/12890763.html?spm=a2c6h.12873639.article-detail.6.7a9a7aceQlWX4D​​

c.time:返回指定日期时间的时间部分

SELECT TIME('1987-01-01 16:00:00');SELECT TIME(CURTIME());SELECT TIME(CURRENT_TIMESTAMP);

11.使用数据处理函数_mysql_09

d.检索出2005年9月下的所有订单,怎么办?

法1:select cust_id,order_num from orderswhere date(order_date) between '2005-09-01' and '2005-09-30';

11.使用数据处理函数_mysql_10

e.检索出order_date为2005年9月的所有行:

法2:(一种不需要记住每个月中有多少天或不需要操心闰年2月的办法)select cust_id,order_num from orderswhere year(order_date) = 2005 and month(order_date) = 9;

Year()是一个从日期(或日期时间)中返回年份的函数。Month()从日期中返回月份。

11.使用数据处理函数_mysql_11

3.数值处理函数

数值处理函数仅处理数值数据。这些函数一般主要用于代数、三角或几何运算。因此没有串或日期—时间处理函数的使用那么频繁。

11.使用数据处理函数_mysql_12

a.ABS(X) : 返回X的绝对值。

select abs(-9),abs(-20)

11.使用数据处理函数_mysql_13

b.ROUND(X,Y) :返回参数X的四舍五入的有Y位小数的值。

SELECT ROUND(3.1415926,3)

11.使用数据处理函数_mysql_14

SELECT prod_price,ROUND(prod_price,1) from products;

11.使用数据处理函数_mysql_15

c.TRUNCATE(X,Y) :返回参数X截断为Y位小数的结果。

SELECT TRUNCATE(3.1415926,4)

11.使用数据处理函数_mysql_16

SELECT prod_price,TRUNCATE(prod_price,1) from products;

11.使用数据处理函数_mysql_17

d.RAND() : 返回 0~1内的随机值。

SELECT RAND()

11.使用数据处理函数_mysql_18

三.总结

学习了:

  1. 文本处理函数(upper,soundex)
  2. 日期和时间处理函数(date,time,year,month)
  3. 数值处理函数(abs,rand,round,truncate)

多思考,多总结,多输出,一键四连~

但行好事,莫问前程,我们下篇见~

10.《创建计算字段》:​​https://blog.51cto.com/SuperBigData/5473849​​

9.《用正则表达式进行搜索》:​​https://blog.51cto.com/SuperBigData/5466582​​

8.《用通配符进行过滤》:​​https://blog.51cto.com/SuperBigData/5458893​​ 

7.《数据过滤》:​​https://blog.51cto.com/SuperBigData/5457563​​ 

6.《过滤数据》:​​https://blog.51cto.com/SuperBigData/5456902​​ 

5.《排序检索数据》:​​https://blog.51cto.com/SuperBigData/5451534​​ 

4.《检索数据》:​​https://blog.51cto.com/SuperBigData/5449032​​ 

3.《使用MySQL》:​​https://blog.51cto.com/SuperBigData/5437954​​ 

2.《MySQL简介》:​​https://blog.51cto.com/SuperBigData/5436719​​ 

1.《了解MYSQL》:​​https://blog.51cto.com/SuperBigData/5434475​​

举报

相关推荐

0 条评论