数据库 库函数 MYSQL

文章详细介绍了MySQL中处理字符串的函数,如trim、lPad、rPad、length等,以及数学函数如abs、ceil、floor,还包括日期和时间函数如CURRENT_DATE、CURRENT_TIME、NOW,以及日期时间的加减、格式化等操作。
摘要由CSDN通过智能技术生成


一、 字符串函数
	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  ,  ....   )  :  在后面的字符串 中查找 第一个参数(需要查找的字符串) 的位置(不是下标!!!) ,如果没有就返回 0select 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) 一个月份中的最后一天 ( 28293031Select  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 , 添加 到 日期date8. 添加、减少日期时间
		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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值