首页 > 数据库 >SQL库函数

SQL库函数

时间:2022-11-03 23:02:46浏览次数:43  
标签:sname str len student SQL 字符串 select 库函数

一、 字符串函数

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


标签:sname,str,len,student,SQL,字符串,select,库函数
From: https://blog.51cto.com/u_15707781/5821317

相关文章

  • SQL库函数
     一、字符串函数 1.删除字符、添加字符 trim(str) :去掉两侧空格 ltrim(str) :去掉左侧空格 rtrim(str) :去掉右侧空格 trim(位置,'去掉谁......
  • 07_查询数据_系统数据字典_SQL值表达式
    一、系统数据字典 代码:select*fromgp_pgdatabase;(查看数据字典) 二、SQL值表达式值表达式包括查询条件中的各种命令;值表达式的结果称为标量;表达式语法允许从原......
  • MySQL连接分页查询问题
    问题两表连接查询分页,如果不进行排序,则分页不准确,这将导致第一页出现的数据会在后几页再次出现,而且每次查询第一页结果都不一致解决连接查询分页必须按主键分页才能保证......
  • sql笔记
    1.注释单行注释:"--"注释内容或"#"注释内容(MySQL特有)多行注释:/*注释*/1DDL操作数据库查询SHOWDATABASES;创建创建数据库CREATEDATABASE数据库......
  • PostgreSQL中的伪内存表
    ToWALornottoWAL?和其他许多数据库一样,PostgreSQL允许某个表不记录日志,简而言之就是"把我排除在WAL日志之外!"。这样的表不是崩溃安全的,同样也不能复制,因为PostgreSQL......
  • docker运行mysql
    ......
  • 河北首家城商行传统核心业务国产化,TDSQL突破三“最”为秦皇岛银行保驾护航
    11月1日,秦皇岛银行新一代分布式核心系统成功投产并稳定安全运行超过三个月,标志着秦皇岛银行数字化转型应用和服务水平登上了一个新台阶。这是秦皇岛银行有史以来规模最......
  • MySQL的rank排名函数
    ROW_NUMBERselectemployeeIdsalaryrow_number()over(orderbysalarydesc)asrankfromemployee;此语句会帮我们另起一行为rank,而且按照顺序排好序,类似(1,2,3,4...)RANK......
  • sql:递减/递减更新一列字段值
    (目录)需求说明新加一个字段age按照id逆序(由大到小)排序递增设置age字段值即:id最大的那行的age字段值设置为1;id最小的那行的age字段值设置为最大值最终实现效果s......
  • mysql 导入问题排查
    ERR]2006-MySQLserverhasgoneaway--查询最大数showglobalvariableslike'max_allowed_packet';--临时设置setglobalmax_allowed_packet=1024*1024*512;......