一. 字符串函数
#CHAR_LENGTH(s)返回字符串s的字符数 SELECT CHAR_LENGTH('你好123'); #5 #LENGTH(s)返回字符串s的长度,和字符集有关 SELECT LENGTH('你好123'); #CONCAT(s1,s2,...)将字符串s1,s2等多个字符串合并为一个字符串 SELECT CONCAT('12','34'); #1234 #CONCAT_WS(x,s1,s2,...)同CONCAT(s1,s2,...)函数,但是每个字符串之间要加上x SELECT CONCAT_WS('@','12','34'); #12@34 #INSERT(s1,x,len,s2)将字符串s2替换s1的x位置开始长度为len的字符串 SELECT INSERT('12345',1,3,'abc'); #abc45 #UPPER(s),UCAASE(S)将字符串s的所有字母变成大写字母 SELECT UPPER('abc'); #ABC #LOWER(s),LCASE(s) 将字符串s的所有字母变成小写字母 SELECT LOWER('ABC'); #abc #LEFT(s,n)返回字符串s的前n个字符 SELECT LEFT('abcde',2); #ab #RIGHT(s,n)返回字符串s的后n个字符 SELECT RIGHT('abcde',2); #de #LPAD(s1,len,s2)字符串s2来填充s1的开始处,使字符串长度达到len SELECT LPAD('abc',5,'xx'); #xxabc #RPAD(s1,len,s2)字符串s2来填充s1的结尾处,使字符串的长度达到len SELECT RPAD('abc',5,'xx'); #abcxx #LTRIM(s)去掉字符串s开始处的空格 #RTRIM(s)去掉字符串s结尾处的空格 #TRIM(s)去掉字符串s开始和结尾处的空格 #TRIM(s1 FROM s)去掉字符串s中开始处和结尾处的字符串s1 SELECT TRIM('@' FROM '@@abc@@'); #abc #REPLACE(s,s1,s2)将字符串s2替代字符串s中的字符串s1 SELECT REPLACE('abc','a','x'); #xbc #substring(str, pos)被截取字段,从第几位开始截取 SELECT SUBSTRING('我和我的祖国,一刻也不能分割.',5); #祖国,一刻也不能分割. #SUBSTRING(s,n,len)获取从字符串s中的第n个位置开始长度为len的字符串 SELECT SUBSTRING('helloworld',6,5); #world #substring_index(str,delim,count) 被截取字段,关键字,关键字出现的次数) SELECT SUBSTRING_INDEX("blog.jb51.net",".",2) #blog.jb51 #locate(str,string);查询string是否包含str,存在返回str出现的位置,不存在返回0 SELECT LOCATE('_','user_name'); #5 |
二. 数学函数
#MOD(x,y)返回x除以y以后的余数 SELECT MOD(5,2); #1 #SQRT(x)返回x的平方根 SELECT SQRT(25); #5 #POW(x,y).POWER(x,y)返回x的y次方 SELECT POW(2,3); #8 #TRUNCATE(x,y)返回数值x保留到小数点后y位的值,y位之后之间舍去 SELECT TRUNCATE(1.23456,3); #1.234 #ROUND(x,y)保留x小数点后y位的值,但截断时要进行四舍五入 SELECT ROUND(1.23456,3); #1.235 #CEIL(x),CEILING(x)返回大于或等于x的最小整数 SELECT CEIL(1.5); #2 #FLOOR(x)返回小于或等于x的最大整数 SELECT FLOOR(1.5); #1 |
三.时间日期函数
#CURDATE(),CURRENT_DATE()返回当前日期 SELECT CURDATE() update mytable set last_modify_date = CURDATE() where username = 'chai'; insert into mytable (username,hiredate)values('chai',CURDATE()); #CURTIME(),CURRENT_TIME返回当前时间 SELECT CURTIME(); #NOW(),CURRENT_TIMESTAMP(),LOCALTIME(),SYSDATE(),LOCALTIMESTAMP()返回当前日期和时间 SELECT NOW(); #MONTH(d)返回日期d中的月份值,1->12 SELECT MONTH('2011-11-11 11:11:11'); #MONTHNAME(d) 返回日期当中的月份名称,如Janyary SELECT MONTHNAME('2011-11-11 11:11:11') #November #DAYOFWEEK(d)日期d今天是星期几,1星期日,2星期一 SELECT DAYOFWEEK('2011-11-11 11:11:11') #6 #DAYNAME(d)返回日期d是星期几,如Monday,Tuesday SELECT DAYNAME('2011-11-11 11:11:11') #Friday CURRENT_TIMESTAMP()时间戳 |
四. 分组函数
分组函数作用于一组数据,并对一组数据返回一个值。 可以对数值型数据使用AVG 和 SUM 函数。 可以对任意数据类型的数据使用MIN和MAX函数。 COUNT(*)返回表中记录总数,适用于任意数据类型。 COUNT(expr) 返回expr不为空的记录总数。 可以使用GROUP BY子句将表中的数据分成若干组 在SELECT列表中所有未包含在组函数中的列都应该包含在GROUP BY 子句中。 包含在GROUP BY子句中的列不必包含在SELECT列表中 不能在 WHERE 子句中使用组函数。可以在 HAVING 子句中使用组函数。 |