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'
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'