Mysql常用数据处理函数

一、函数介绍

SQL和大多数程序语言一样支持用函数来处理数据。不同的DBMS中有SQL通用的数据处理函数,当然也有自己独有的数据处理函数,所以函数在DBMS上的可移植性没有SQL语言的强。

二、使用函数

大多数的DBMS都支持以下函数:

  • 用于处理文本串(删除,填充,转换值大小写)的文本函数
  • 用于数据数值上的算术运算(绝对值,代数运算)
  • 处理日期和时间值,并从中提取特殊成分(返回两日期时间差,检查日期有效性等)
  • 返回DBMS正在使用的特殊信息(用户登录,版本信息)–系统函数

三、具体实现

1、文本处理函数

常用的文本处理函数:
函数 说明
Left(str,length) 返回str串左边起length个字符
Right(str,length) 返回str串右边起length个字符
Length( ) 返回串的长度
Locate(str1,str2 ) 找出串str1在串str2中第一次出现的位置
Lower( ) 将串转换为小写
Upper() 将串转换为大写
LTrim() 去掉左边的空格
RTrim() 去掉右边的空格
Soundex 返回串的SOUNDEX值
SubString(str,index) 返回字符串str从index开始的子串

注:

Soundex是一种语音算法,利用英文字的读音计算近似值,值由四个字符构成,第一个字符为英文字母,后三个为数字。在拼音文字中有时会有会念但不能拼出正确字的情形,可用Soundex做类似模糊匹配的效果。例如Knuth和Kant二个字符串,它们的Soundex值都是“K530”。其在电脑大师高德纳名著《计算机程序设计艺术》都有详细的介绍。

2、日期和时间处理函数

函数 说明
Adddate(date,INTERVAL expr unit) 给data加上expr间隔的unit单位时间
AddTime() 增加一个时间(时,分等)
CurDate() 返回当前日期
CurTime() 返回当前时间
Date() 返回当前日期时间的日期部分
DateDiff() 计算两个日期之差
Date_Add() 灵活的时间运算函数,和addTime()差不多
Date_Format() 格式化日期时间串
Day() 返回天
Hour() 返回小时
Minute() 返回分钟
Second() 返回秒数
DayOfWeek() 返回星期几
Month() 返回月份
Now() 返回当前日期和时间
Time() 返回当前时间
Year() 返回年数

实例:

AddDate(date,INTERVAL expr unit)

  • INTERVAL 指定单位是不可省略(增加单位是打印可以省略)
  • expr :增加数量
  • unit :增加单位
mysql> select hiredate ,adddate(hiredate,interval 1 day) from emp;
+------------+----------------------------------+
| hiredate   | adddate(hiredate,interval 1 day) |
+------------+----------------------------------+
| 1980-12-17 | 1980-12-18                       |
| 1981-02-20 | 1981-02-21                       |
| 1981-02-22 | 1981-02-23                       |
| 1981-04-02 | 1981-04-03                       |
| 1981-09-28 | 1981-09-29                       |
| 1981-05-01 | 1981-05-02                       |
| 1981-06-09 | 1981-06-10                       |
| 1987-04-19 | 1987-04-20                       |
| 1981-11-17 | 1981-11-18                       |
| 1981-09-08 | 1981-09-09                       |
| 1987-05-23 | 1987-05-24                       |
| 1981-12-03 | 1981-12-04                       |
| 1981-12-03 | 1981-12-04                       |
| 1982-01-23 | 1982-01-24                       |
+------------+----------------------------------+
14 rows in set (0.00 sec)

// 实例:
/**增加一天*/
select adddate(hiredate,interval 1 hour),hiredate from emp;
/**增加一分*/
select adddate(hiredate,interval 1 minute),hiredate from emp;
/**增加一秒*/
select adddate(hiredate,interval 1 second),hiredate from emp;
/**增加一天,interval 和 nuit可以省略*/
select adddate(hiredate,1),hiredate from emp; 


/**增加一天一时*/
select adddate(hiredate,interval '1 1' DAY_HOUR),hiredate from emp;
/**增加一时一分*/
select adddate(hiredate,interval '1:1' HOUR_MINUTE),hiredate from emp;

注意:Mysql中在用where过滤时间数据时候,会自动精确到时,分和秒,。所以在进行时间比较的时候要相当注意两者比较的部分,

只比较日期的时候应该把时间部分略去

筛选时间区间

方案一:between and 关键字

mysql> select hiredate from emp where hiredate between '1981-01-01' and '1982-12-12';

必须使用单引号

方案二:时间过滤

select hiredate from emp where year(hiredate)=1981 and (month(hiredate) in (2,4));

3、数值处理函数

在主要的DBMS中,数值处理函数是最统一和最一致的函数,主要用于代数,三角或集合运算。

函数 说明
Abs() 返回一个数的绝对值
Cos() 返回一个角的余弦值
Exp() 返回一个数的指数值
Mod() 取余
PI() 返回圆周率
Rand() 返回一个随机数
Sin() 返回一个角的正弦值
Sqrt() 返回一个数的平方根
Tan() 返回一个角的正切值

猜你喜欢

转载自blog.csdn.net/qq_44957186/article/details/113917667