前段时间b站看sql基础语法,在此做一总结
1.基本函数
mysql中的函数基本可以分为单行函数和分组函数,单行函数用于处理单个的数据,分组函数则是传输一组值过去进行处理。单行函数有可分为字符函数,数学函数,其他函数,和流程控制函数。下面按顺序展开讲。
1.1 字符函数
*length*
length函数用于统计字节
的长度 。使用方法 length(str)
,utf-8编码下一个字母一个字节,一个汉字三个字节。*concat*
concat用于拼接字符。使用方法 concat(str1,str2,...strn)
。
*upper,lower*
upper转换为大写,lower转化为小写。
*substr*
substr函数用于截取字符,使用方法 第1种.substr(str,pos)
从str的第pos位开始截取以后的字符并返回,pos从一开始。第2种.substr(str,pos,len)
从str的第pos位开始截取len个字符并返回。
*instr*
返回子字符串在父子符串中出现的位置(从1开始),找不到返回0。 使用方法instr( parent,sbub )
。
*trim*
去除字符串两边指定的字符。使用方法trim( 'trimItem' from str )
.eg: SELECT TRIM( 'a' FROM 'asssaasssaaa' )
的运行结果是'sssaasss'
。*lpad,rpad*
lpad用指定字符填充指定字符串的左边到指定长度。使用方法lpad(str,length,padStr)
;rpad与lpad功能相似,只是从右边开始填充。
*replace*
替换字符串。使用方法replace(str,replacedStr,padStr)
.eg:replace('sfsfs','f','a')
的执行结果是sasas。
字符函数总归是处理字符的函数,大小写转换,长度计算,子串与父串的位置关系,填充,替换这几种功能
1.2 数字函数
*round*
保留指定位数之后四舍五入。 用法round(number, D)
保留D位小数,四舍五入。
*ceil,floor*
ceil为向上取整函数,floor为向下取整。
*truncate*
截断小数点后第几位。用法 truncate(number,D)
保留D位小数,截断。
*mod*
取余。 用法mod(number,mod)
,结果是number % mod 的结果。
1.3 日期函数
*str_to_date*
将日期格式的字符串按照指定格式转换为字符串。格式使用%Y,%m等指定。举例: str_to_date('4-3 1993','%c-%d %Y')
的结果是1993-04-03。*date_format*
将日期转换为指定格式的字符串。格式指定字符同上。
常见格式说明:
1.4 其他函数
一些系统函数,诸如version
查看版本。database
当前正在使用的数据库。以及其他等等。
1.5 流程控制函数
*if*
与三元运算符效果类似,使用方法if(expression, exe1,exe2)
,如果expression为真则执行exe1,若为假则执行exe2。*case when then else end*
。 有两种使用方法,第一种:
case expression
when 常量 then [要显示的值 | 要执行的语句;]
可以多个...
else 缺省时执行的 [要显示的值 | 要执行的语句;]
end;
第二种:
case
when 条件1 then 要显示的值 | [要显示的语句;]
when 条件2 then 要显示的值 | [要显示的语句;]
else 要显示的值 | [要显示的语句;]
end;
下来介绍多行函数:
多行函数都是对一组值进行计算的。*sum*
统计一组值得和。
*avg*
统计一组值的平均值。
*min*
统计一组值中的最小值。
*max*
统计一组值中的最大值。
*count*
统计一组值得个数。
以上函数,都会忽略null值。sum,avg
只能使用数值型数据。min,max
可以用于数字,字符,日期类型。 count
支持任何类型。