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

 

posted @ 2022-11-03 22:49  呆萌老师  阅读(52)  评论(0编辑  收藏  举报