SQL库函数
一、 字符串函数
1. 删除字符 、 添加字符
trim ( str ) : 去掉两侧空格
ltrim( str ) : 去掉左侧空格
rtrim ( str ) : 去掉右侧空格
trim ( 位置 , '去掉谁' From '原始字符串' ) : 从 【原始字符串】 中去掉 【位置】指定的 子字符串 【去掉谁】
lPad( str , 长度len , '填充字符' ) ; 在 str 的左侧 补充字符【填充字符】 , 直到总长度 为 len .
rPad( str , 长度len , '填充字符' ) ; 在 str 的右侧 补充字符【填充字符】 , 直到总长度 为 len .
select ' abc'
select trim(' abc')
update student set sname=' 吴小亮' where sid=2001001
select trim(sname) from student
select lpad(sname,10,'a') from student
2. 字符串的长度
length ( str ); : 字符串 str 的字节数
char_length ( str ); : 字符串 str 的字符数
select char_length(sname) from student
select * from student
-- 查询名字为两个字 的学生
select * from student where CHAR_LENGTH(sname)=2
3. 拼接字符串
concat ( str1 , str2 , ... ); 拼接 多个字符串 'aaa' , 'bbb' ===> 'aaabbb'
concat_ws ( 分隔符 , str1 , str2 , ... )拼接 多个字符串 'aaa' , 'bbb' ===> 'aaa;bbb'
select concat(major,sname) from student
select concat_ws(" ",major,sname) from student
4. 查找 字符串的位置
field ( 需要查找的字符串 , 原字符串1 , 原字符串2 , 原字符串3 , .... ) : 在后面的字符串 中查找 第一个参数(需要查找的字符串) 的位置(不是下标!!!) ,如果没有就返回 0 。
select field('王前',sname,major) from student;
select field('计算机及应用',sname,major) from student;
select * from student
select * from student order by class desc
-- 自定义排序规则
select * from student order by field(class,'0102','0101','0104')
instr ( 原始字符串str , 子字符串substr )
-- : 返回 子字符串substr 在 原始字符串str 中第一次出现的位置 。
select instr(sname,'大') from student
locate ( 子字符串substr , 原始字符串str ) : 同 instr( )
locate ( 子字符串substr , 原始字符串str , 起始位置pos ) : 返回 子字符串substr 在 原始字符串str pos 以后的 部分第一次出现的位置 。
select locate('0',class,2) from student
select * from student
5. 截取字符串
left ( 原始字符串str , 截取的长度 ) ; 从左侧截取 len 个字符
right ( 原始字符串str , 截取的长度 ) ; 从右侧截取 len 个字符
substring ( 原始字符串str , 起始位置pos ) / substring ( 原始字符串str FROM 起始位置pos ) : 从 【原始字符串 str】中的第 pos 位置开始截取后段字符串 。
substring ( 原始字符串str , 起始位置pos , 截取的字符个数len ) / substring ( 原始字符串str FROM 起始位置pos FOR 截取的字符个数len ) : 从 【原始字符串 str】中的第 pos 位置开始截取 len 个字符 。
substr ( ) : 同 substring()
select left(sname,2) from student
select right(sname,2) from student
select substring(sname,1) from student
select substring(sname,1,2) from student
6. 大小写
lower ( ) / lcase ( ) : 小写
UPPER( ) / ucase( ) : 大写
select lower('AGGG')
7. 替换字符串
insert ( 原始字符串str , 起始位置pos , 替换长度len , 新子字符串newStr ) :
select insert(sname,1,2,'**') from student
repalce ( 原始字符串str , 旧的子字符串 , 新的子字符串 )
select replace(sname,'小','小小') from student
reverse ( 原始字符串str )
select reverse(sname) from student
二、 数学函数
1.
abs()
select abs(mark) from score
2.
ceil ( n ) , ceiling ( n )
floor ( n )
select ceil(avg(mark)) from score where cid='01'
select floor(avg(mark)) from score where cid='01'
3.
format ( 小数X , 位数D ) , 通过 四舍五入 保留 小数点D位
truncate ( 小数X , 位数D ) , 通过 直接舍弃 保留 小数点D位
round( 小数X )
round( 小数X , 位数D )
select round(avg(mark)) from score where cid='01'
4.
mod ( x , y )
mod : X mod Y
X % Y
select * from score where mark %10=3
5.
PI( ) : 3.1415926535
6.
power ( x , y ) / pow( x , y ) : 返回 x 的 y 次方
sqrt ( n ) : 开根号之后 的结果
select power(2,3)
7.
rand( ) : 返回 0--1 之间的随机数
rand( seed ) : seed : 种子数 !
select rand()
三、 日期函数
1. 获得 当前系统日期
SELECT CURRENT_DATE , CURRENT_DATE() , CURDATE() ;
select CURRENT_DATE
2. 获得 当前系统时间
SELECT CURRENT_TIME , CURRENT_TIME() , CURTIME() ;
select CURRENT_TIME
3. 获得 当前系统日期时间
SELECT CURRENT_TIMESTAMP , CURRENT_TIMESTAMP() , NOW();
SELECT LOCALTIMESTAMP , LOCALTIMESTAMP() , NOW();
SELECT LOCALTIME , LOCALTIME() , NOW();
select CURRENT_TIMESTAMP
select now()
create table users2(
uid int primary key,
uname varchar(20),
pwd varchar(20),
regdate TIMESTAMP default now() -- TIMESTAMP 时间戳
)
select * from users2
insert into users2 values(1,'aa','123',default)
4. 获得 日期时间的一部分
(1) 取得日期部分
date( d );
(2)取得时间部分
time( d ) ;
(3) 取得 年 、 月 、日 、 时 、分 、 秒
year ( d );
month ( d ) ;
day ( d ) / DayOfMonth ( d ) ;
MonthName( d ); -- 月份 全称
Hour( NOW() ) ,
MINUTE( NOW() ) ,
SECOND ( NOW() );
select hour(now())
(4)取得 星期几
DayOfWeek( d ) ;
DayName( d );
(5)取得任意一部分(type)
Extract ( type FROM date );
EXTRACT( YEAR_MONTH FROM NOW() ) ,
EXTRACT( HOUR_MINUTE FROM NOW() )
说明 : type 的取值 可以在 Date_add() 函数处 !!!
5.
(1) 一个月份中的最后一天 ( 28 , 29 , 30 , 31 )
Select Last_Day ( NOW() );
Select Last_Day ( NOW() );
6. 添加、减少日期
SELECT ADDDATE( '2001-1-1 0:0:0' , 20 ) , DATE_ADD( '2001-1-1 0:0:0' ,INTERVAL 20 DAY) , ADDDATE( '2001-1-1 0:0:0' , INTERVAL 20 YEAR ) ; - 默认加 天
SELECT SubDATE( '2001-1-1 0:0:0' , 20 ) , DATE_Sub( '2001-1-1 0:0:0' ,INTERVAL 20 DAY) , subDATE( '2001-1-1 0:0:0' , INTERVAL 20 YEAR ); -
select adddate(now(),20)
7. 添加、减少时间
AddTime( date , time ) : 将 时间 time , 添加 到 日期date上
8. 添加、减少日期时间
TimestampAdd ( type , num , date ) : 给 日期时间 date 上添加 指定类型指定数额
TimestampDiff ( type , date1 , date2 ) : 计算出 两个日期时间 date1 和 date2 之间的差额 ??
select TIMESTAMPDIFF(day,now(),'2018-09-01')
9. 两个时间之间的差额
DateDiff( )
TimeDiff( )
10. 格式化日期时间
(1)Date_format ( ) : 将 日期时间对象 按照指定格式 转换为字符串
select date_format(now(),'%Y/%m/%d')
(2)str_to_date ( ) : 将 日期格式的字符串 转换为 日期时间对象
select str_to_date('2019-01-01','%Y-%m-%d')
11. 世界标准日期、时间
SELECT UTC_DATE , UTC_DATE() ;
SELECT UTC_TIME , UTC_TIME() ;
SELECT UTC_TIMESTAMP , UTC_TIMESTAMP() ;
select UTC_TIME