欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysql学习笔记(四) MySQL常用函数

程序员文章站 2022-03-03 17:42:24
...

字符串函数

  •  concat(s1,s2,s3…sn):连接S1,S2,S3..Sn 为一个字符串;
CREATE TABLE class ( dept INT(8) NOT NULL PRIMARY KEY,
		deptname CHAR(32) );
		
INSERT INTO class (dept,deptname)VALUES (11,'cleaning'),(12,'grocery'),(10,'aloco'),(14,'snacking'); 

mysql学习笔记(四) MySQL常用函数

SELECT CONCAT(dept,'-',deptname) FROM class
WHERE dept = 12 ;

mysql学习笔记(四) MySQL常用函数

需要注意的是任何字符串与NULL串连,结果都将是NULL

如下实例:

INSERT INTO class (dept,deptname)VALUES (16,NULL);
SELECT CONCAT(dept,'-',deptname) FROM class
WHERE dept = 16 ;

 

执行结果如下:

mysql学习笔记(四) MySQL常用函数

  • Insert(str,x,y,instr):将字符串 str 从第x个开始,y个字符长得子串替换为字符串instr
SELECT INSERT(deptname,2,5,'classssssssssss')FROM class 
WHERE dept = 12 ;

执行结果如下:

mysql学习笔记(四) MySQL常用函数

如果字符串instr长度大于Y???

如上,都会插入。。。

  • Lower(str): 将字符串str 中所有字符变为小写
INSERT INTO class VALUES (19,'HHHH');
SELECT LOWER(deptname) FROM class 
WHERE dept=19 ;

mysql学习笔记(四) MySQL常用函数

如果str 是Null??

mysql学习笔记(四) MySQL常用函数

  • upper(str): 将字符串str 中所有字符变为大写
SELECT UPPER(deptname) FROM class 
WHERE dept=12 ;

mysql学习笔记(四) MySQL常用函数

  • left(str,x):返回字符串str的最左边X个字符
SELECT LEFT(deptname,2) FROM class WHERE dept = 11 ;

mysql学习笔记(四) MySQL常用函数

  • right(str,x):返回字符串str的最右边X个字符
SELECT RIGHT(deptname,3) FROM class WHERE dept = 12 ;

对于left和right函数如果第二个参数是NULL 则不返回任何字符串

  • elt(index,str1,str2,str3…):返回指定index位置的字符串
SELECT RIGHT(deptname,NULL) FROM class WHERE dept = 12 ;

mysql学习笔记(四) MySQL常用函数

那如果第一个参数是NULL呢??---结果是一样的-----------NULL

SELECT RIGHT(NULL,3) FROM class WHERE dept = 12 ;

mysql学习笔记(四) MySQL常用函数

  • Lpad(str,n,pad):用字符串pad 对字符串str最左边进行填充,直到长度为n个字符长度。
  • Rpad(str,n,pad):用字符串pad 对字符串str最右边进行填充,直到长度为n个字符长度。
SELECT LPAD(deptname,15,'sEnEdEr') FROM class WHERE dept = 10 ;
SELECT RPAD(deptname,15,'sEnEdEr') FROM class WHERE dept = 10 ;

mysql学习笔记(四) MySQL常用函数

mysql学习笔记(四) MySQL常用函数

对于Lpad和Rpad 函数如果字符串的长度n不能容纳完整的字符串pad,字符个数够了以后的pad后面的字符都会被截去

  • Ltrim(str):去掉字符串左侧的空格
  • Rtrim(str):去掉字符串行尾的空格
INSERT INTO class VALUES (22,'           aaa           ');
SELECT LTRIM(deptname) FROM class WHERE dept = 22;
SELECT RTRIM(deptname) FROM class WHERE dept = 22;

mysql学习笔记(四) MySQL常用函数

mysql学习笔记(四) MySQL常用函数

Repeat(str,x):返回字符串str 重复X次以后的结果

SELECT REPEAT(deptname,3) FROM class WHERE dept = 11;

mysql学习笔记(四) MySQL常用函数

Replace(str,a,b):用字符串b替换字符串str中所有出现的字符串a

SELECT REPLACE(deptname,'o','m') FROM class WHERE dept = 10;

mysql学习笔记(四) MySQL常用函数

Strcmp(s1,s2):比较字符串s1和s2—比较的是字符串ASCII码值的大小。

strcmp类似编程语言中的比较字符串函数(依据ascll码?),会从左到右逐个比较,直到有一个不等就返回结果,否则比较到结尾。

Trim(str):去掉字符串行尾和行头的空格

SELECT TRIM(deptname) FROM class WHERE dept = 22;

mysql学习笔记(四) MySQL常用函数

Substring(str,x,y):返回字符串str x位置起y个字符长度的字符串

length(str):用于获取字符串长度

获取字符串字符数函数:char_length(str)

字符串查找函数:

  • find_in_set(str1,str2):返回字符串str1在str2中的位置str2包含若干个以逗号分隔的字符串(可以把str2看出一个列表,元素是多个字符串,查找结果是str1在str2这个列表中的索引位置,从1开始)
  • field(str,str1,str2,str3…):与find_in_set类似,但str2由一个类似列表的字符串变成了多个字符串,返回str在str1,str2,str3…中的位置。
  • locate(str1,str2):返回子串str1在字符串str2中的位置
  • position (str1 IN str2):返回子串str1在字符串str2中的位置
SELECT POSITION('o' IN deptname)FROM class;

mysql学习笔记(四) MySQL常用函数

  • instr(str1,str2):返回子串str2在字符串str1中的位置【注意这里调转了】

 

数值函数:

Abs(x):返回X的绝对值

Cel(x):返回大于x的最小的整数值

Floor(x):返回小于x的最大整数值

Mod(x,y):返回x/y 的模;

Rand():返回0-1内的随机数

Round(x,y):返回参数x四舍五入的有Y位小数的值

Truncate(x,y):返回数字x阶段为Y未小数的结果

 

日期和时间函数

 

CurDate():返回当前日期---只包含年月日

CurTIME():返回当前时间—只包含时分秒

Now():返回当前的日期和时间

Unix_TIMESTAMP(date):返回日期date的UNIX时间戳

FROM_UNIXTIME:f 返回UNIX时间戳的日期值---与Unix_TIMESTAMP(date)互为逆操作

Week(date):返回日期date是一年中的第几周

Year(date):返回日期date的年份

Hour(time):返回当前时间的小时值

MINUTE(time):返回时间的分钟值

Monthname(date):返回date的月份的英文名

Date_FORMATE(date,fmt ):按字符串 fmt 格式化日期date的值,此函数能够按指定的格式显示日期,可用到的格式符如下:

Date_add(date,interval expr type):返回与所给日期date相差INTERVAL 时间段的日期

其中INTERVAL 是间隔类型关键字,exp是一个表达式,这个表达式对应后面的类型,type是间隔类型,mysql提供了13种间隔类型,如下:

Datediff(date1,date2):用来计算两个日期相差的天数

流程函数

If(value,t,f):如果value是真返回t,否则返回f

Ifnull(value1,value2):如果value1不为空,则返回value1,否则返回value2

此函数常用来替换null值,

Case [expr] when[value1] then [result1]…else[default]end :如果expr等于value1,则返回result1,否则返回default

这其中可以有多个when 例如:

Case salary when 1000 then ‘low’ when 2000 then ‘mid’ else ‘high’

 

其他常用函数

 

此处仅做一些列举,更多详见Mysql的官方手册

Database():返回当前的数据库名

Version()返回当前的数据库版本

User():返回当前登录的用户名

Inet_aton(IP):返回IP地址的数字表示

Inet_ntoa(num):返回数字表示的IP地址

Inet_aton(IP):和Inet_ntoa(num):的主要用途是将字符串的IP地址转换为数字表示的网络字节序,这样可以更方便的进行IP或者网段的比较

Password(str):返回字符串str的加密版本

MD5():返回字符串str的MD5值—加密