Mysql函数

Mysql聚合函数:


avg平均数的函数(返回表中某字段的平均值):
select avg(age) from tableName;-----这是查询表中的平均年龄


count总个数函数(返回select检索到的指定列的非null的值的数目):
select count(name) from tableName;-----如果name变为*通配符的话,空值也会算个数


min/max最小最大值函数(返回select检索到的最大值或者最小值):
select min(age) as ‘最小值’,max(age) as ‘最大值’ from tableName;
------这个就会输出该字段的最大值和最小值的值


sum总数的函数(返回select检索到的指定列的总和):
select sum(age) from tableName;-----这个是所有年龄加起来的和,求和函数


MySQL控制流程函数:
case(如果没有匹配的结果值,则返回else后的结果,如果没有else部分,就返回null)
和switch的case差不多,只不过default用else代替,例如:
select case 2 when 1 then 'n' when 2 then 'm' else 'xiaobai'end as result;
-----这个返回结果为m,如果case后面是3,就返回xiaobai了,流程控制和表关系不大。


if(如果表达式1成立就返回表达式2的值,否则返回表达式3的值,类似于三目运算符):
SELECT if(1>2,'no','yes') as 'mima';-----这里字段名处就是mima,返回的是yes。


ifnull(如果表达式1不为null就返回表达式1否则就返回表达式2):
select IFNULL(1,2);-----这里返回的是1
select IFNULL(NULL,2);-----这里就返回2,可以用于用一个特定的值代替null值


nullif(如果表达式1和表达式2相等,那么久返回null,否则就返回表达式1):
SELECT NULLIF(1,1);-----返回的是null值
SELECT NULLIF(1,5);-----返回的是1,可以判断两个的值是否相等


MySql字符串函数:
char_length(str) (返回字符串的长度,单位为字符):
select CHAR_LENGTH('dsgvfds') from tableName;-----返回值为7,这里的中文也算一个字符
format(x,d) (将数字x的格式写为:#,###,###.##,以四舍五入的方式保留小数点后d位
并且以字符串的形式返回,如果d为0,则不含小数部分):
select FORMAT(14568774984.15646,2);-----返回的结果为:14,568,774,984.16


insert(str,pos,len,newstr) (返回字符串str,pos是起始位置
len是被替换的str的长度,newstr就是插入进去的字符串):
SELECT INSERT('boyboyboyboy',2,2,'girl');-----返回的结果为bgirlboyboyboy
也就是oy被girl替换掉了


instr(str,substr) (返回的是子字符串出现的第一个位置):
SELECT INStr('bgirlboyboyboy','girl');----返回结果为2


left/right(str,len) (返回从字符串str从左或者从右开始的长度为len的字符串):
select LEFT('xiaobai',4);-----返回结果为xiao
select right('xiaobai',3);----返回结果为bai


length(str) (返回str的长度,单位为字节。一个多字节字符算多字节):
select LENGTH('xiaobai');-----返回7
select LENGTH('xiaobai好');----返回10(一个中文为3个字节)


ltrim(str) (去掉字符串左边的空格):
select ltrim('   xiaobai   好   ');----返回结果为'xiaobai   好   '


rtrim(str) (去掉字符串右边的空格):
select rtrim('   xiaobai   好   ');----返回结果为'   xiaobai   好'


trim(str) (去掉字符串的空格):
select trim('    xiaoba   i好   ');----返回结果为'xiaobai   好',默认只去掉左右两边的空格
select trim(leading 'x' from 'xxxbarxxx');-----返回结果为'barxxx'
select trim(both 'x' from 'xxxbarxxx');-----返回结果为'bar'
select trim(trailing 'xyz' from 'xyzxbarxyz');-----返回结果为'xzyxbar',尾部如果符合xyz就去除尾部的相应字符
select trim(trailing 'x' from 'xxxbarxxx');-----返回结果为'xxxbar'


strcmp(表达式1,表达式2) (如果两个表达式字符串相同,就返回0,如果表达式1小于表达式2,返回-1,否则返回1):
比较两个字符串是否相等--------------------------
select strcmp('str1','1str');-----返回值为1
select strcmp('str1','str1');-----返回值为0
select strcmp('1str','str1');-----返回值为-1


concat(str,str,...) (把字符串们连接起来,如果有一个参数为null,则返回null,
如果有一个参数字二进制的话,就返回二进制的字符串,如果要避免的话,就要用cast进行转换):
select concat(cast(1010 as CHAR),'hjfbd54525');----返回结果为:'1010hjfbd54525'
select concat('hello ','world!');-----返回结果为:'hello world!'
select concat('hello ',null,'world!');------返回结果为null
select concat('hello ',11111,'world!');-----返回结果为:'hello 11111world!'


substring(str,pos) (返回从pos开始的子字符串):
substring('abcdefghijklmn',5)------就是'efghijklmn'
substring(str from pos) (这里的pos可以为负数,就是从右往左算的pos绝对值开始的右边的子字符串):
substring('abcdefghijklmn' from -5)------就是'jklmn'
substring(str,pos,len) ():
substring('abcdefghijklmn',4,6)------就是'defghi'
substring(str from pos for len) ():
substring('abcdefghijklmn' from -5 for 2)------就是'jk'


日期时间函数:
dayofweek(date) (返回的是date是星期几,1->星期日):
select  DAYOFWEEK('2014-04-17');-----返回的是5,代表星期四
dayofyear(date) ():
select  DAYOFYEAR('2014-04-17');-----返回的是107,该年中的第几天
dayofmonth(date) ():
select  DAYOFmonth('2014-04-17');-----返回的是17,该月中的第几天
weekday(date) ((返回的是date是星期几,从0-6表示从星期一到日):
select  weekday('2014-04-17');------返回结果为3
year(date) ():
select  year('2014-04-17');------返回结果为2014
month(date) ():
select  month('2014-04-17');------返回结果为4
quarter(date) ():
select  quarter('2014-04-17');------返回结果为2,第二季度
类似的有hour,minute,second就是time的形参,分别返回time的小时数,分钟数和秒数


to_day(date) (返回一个从年份0开始的天数,这里的0年份是从1582年开始):


to_day(num) (传入一个天数,返回一个date值,不能用于处理阳历出现之前的日期,1582年之前的日期不能用):


curdate():--------返回当前日期返回:'2014-3-12'----后面+0的话就会返回'20140312'
curtime():--------返回当前时间返回:'12:36:45'-----后面+0的话就会返回'123645'
now():--------返回当前日期和时间:'2014-04-17 14:19:45'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值