mysql 常用函数归总--上篇

32F  2018/12/18 mysql



熟悉mysql函数,方便sql语句的精简编写


聚集函数

用于汇集数据记录,运行在行组上,计算和返回单个值的函数

avg()

##计算字段总和求得字段平均值,忽略列值为NULL的行(不计算该行)
SELECT avg(money) FROM `chat_room`;  

count()

##统计行数,注意:*包括所有行,而字段不包括null
SELECT count(money) FROM `chat_room`;     
SELECT count(*) FROM `chat_room`;             

max() &&min()

##返回最大\小值 忽略列值为null 的行
SELECT max(money) FROM `chat_room`;     

sum()

##返回字段数据和  忽略列值为null 的行
SELECT max(money) FROM `chat_room`;     

distinct 选项是用来忽视同样的字段,经常会用到


处理字符串的函数

字符串处理

concat(str1,str2,str3) &&concat_ws('分隔符',str1,str2,str3)

##将多字符串合并成一个字符串,如果传入值中有null,那么结果是null
##concat_ws('分隔符',str1,str2,str3),分隔符为null则结果为null;字符串为null不影响结果
SELECT concat('123','456');       //结果123456     
SELECT concat_ws(',','456',null) ;   //结果456

strcmp(str1,str2)

##比较两字符串的大小。左大于右时返回1,左等于右时返回0,,左小于于右时返回-1,
##strcmp类似编程语言中的比较字符串函数(依据ascll码?),会从左到右逐个比较,直到有一个不等就返回结果,否则比较到结尾。(php中有一个strcasecmp忽略大小写,sql 没有)
select strcmp("a","b");  ------1
select strcmp("ab","ac");  ------1
select strcmp("d","a");  ------1
select strcmp("a","a");  ------0

length(str)

##获取字符串字节数,中文占3个字节
select length("da");  ------2
select length("果然");  ------6

char_length(str)

##获取字符串字符数
select char_length("da");  ------2
select char_length("果然");  ------2

upper(x),ucase(x),转为大写 lower(x),lcase(x),转为小写

##可以是单个字母,也可以是字符串
select upper("da");  ------DA
select lower("DdxX");  ------ddxx

字符串查找函数

字符串查找

find_in_set(str1,str2)

##返回字符串str1在str2中的位置,str2包含若干个以逗号分隔的字符串(可以把str2看出一个列表,元素是多个字符串,查找结果是str1在str2这个列表中的索引位置,从1开始)
select find_in_set("da","123,da,dd");  ------2

field(str,str1,str2)

##与find_in_set类似,但str2由一个类似列表的字符串变成了多个字符串,返回str在str1,str2,str3…中的位置。
select field("abc","abc","11","33");  ------1

locate(str1,str2)

##返回子串str1在字符串str2中的位置
select locate("a","bca33");  ------3

position(str1 IN str2)

##返回子串str1在字符串str2中的位置
select position("a" IN "bca33");  ------3

instr(str1,str2)

##返回子串str2在字符串str1中的位置【注意这里调转了】
select instr("bca33","a");  ------3

获取指定位置的子串

截取

elt(index,str1,str2,str3)

select elt(1,'a','b','c');  -----a

left(str,n) && right同理

select lelt("superman",5);  -----super

substring(str,index,len)

select substring('iamsuperman',4,5);  -----super

添加评论
全部回复
暂无回复