mysql的一些函数

-----字符函数-----

  • char_length(s): 返回字符串的长度。character_length(s)也是一样的功能。

  • CONCAT(s1,s2...sn):拼接字符串。

  • CONCAT_WS(x, s1,s2...sn):也是拼接字符串,但是每个字符串之间会有一个分隔符,x。

  • FIELD(s,s1,s2...):返回字符串s在字符串列表中的位置。

  • FIND_IN_SET(s1,s2):返回字符串s1在s2中的匹配的位置。,例如select find_in_set('j',"jason,j");返回结果为2。

  • FORMAT(x,n):函数可以将数字x进行格式化 "#,###.##", 将x保留到小数点后n位,最后一位四舍五入。例如:SELECT FORMAT(250500.5634, 2); -- 输出 250,500.56

  • INSERT(s1,x,len,s2):字符串s2替换s1的x位置开始长度为len的字符串。例如:字符串s2替换s1的x位置开始长度为len的字符串。

  • LOCATE(s1,s):从字符串s中获取s1的开始位置,例如:SELECT LOCATE('st','myteststring'); -- 5。

  • LCASE(s):转为小写。LOWER(s)也是一样的。

  • UCASE(s):转为大写。UPPER(s)也一样。

  • LEFT(s,n):返回字符串s的前n个字符。例如:SELECT LEFT('runoob',2) -- ru。

  • RIGHT(s,n):返回字符串s的后n个字符。例如:SELECT RIGHT('runoob',2) -- ob

  • LPAD(s1,len,s2):在字符串s1的开始处填充字符串s2,使字符串长度达到len。例如:SELECT LPAD('abc',5,'xx') -- xxabc。

  • RPAD(s1,len,s2):在字符串s1的结尾处添加字符串s2,使字符串的长度达到len,例如:SELECT RPAD('abc',5,'xx') -- abcxx。

  • LTRIM(s):去掉字符串s开始处的空格。

  • RTRIM(s):去掉字符串s结尾处的空格。

  • TRIM(s):去掉头和尾的空格。

  • MID(s,n,len):从字符串s的start位置截取长度为length的子字符串,同SUBSTRING(s,n,len)。例如:SELECT MID("RUNOOB", 2, 3) AS ExtractString; -- UNO

  • SUBSTR(s, start, length):从字符串s的start位置截取长度为length的子字符串。

  • SUBSTRING(s, start, length):从字符串s的start位置截取长度为length的子字符串。

  • POSITION(s1 IN s):从字符串s中获取s1的开始位置,例如:SELECT POSITION('b' in 'abc') -- 2

  • REPEAT(s,n):将字符串s重复n次,例如:select repeat('j',3)---jjj。

  • REPLACE(s,s1,s2):将字符串s2替代字符串s中的字符串s1。SELECT REPLACE('abc','a','x') --xbc

  • REVERSE(s):将字符串s的顺序反过来,例如:SELECT REVERSE('abc') -- cba。

  • SPACE(n):返回n个空格。

  • STRCMP(s1,s2):比较字符串s1和s2,如果s1与s2相等返回0 ,如果s1>s2返回1,如果s1<s2返回-1,例如:SELECT STRCMP("runoob", "runoob"); -- 0

  • SUBSTRING_INDEX(s, delimiter, number):返回从字符串s的第number个出现的分隔符delimiter之后的子串。
    如果number是正数,返回第number个字符左边的字符串。
    如果number是负数,返回第(number的绝对值(从右边数))个字符右边的字符串。

    例如:

    SELECT SUBSTRING_INDEX('a*b','*',1) -- a
    SELECT SUBSTRING_INDEX('a*b','*',-1)    -- b
    SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('a*b*c*d*e','*',3),'*',-1)    -- c
    

-----mysql数字函数-----

  • abs(s):返回绝对值。

  • AVG(expression):返回平均值。expression是一个字段

  • ceil(x):返回大于或等于x的最小整数,也就是天花板数。SELECT CEIL(1.5) -- 返回2。CEILING(x)也一样。

  • FLOOR(x):返回小于或等于x的最大整数,也就是地板数。SELECT FLOOR(1.5) -- 返回1 

  • COUNT(expression):计数统计。

  • n DIV m :整除,n为被除数,m为除数。SELECT 10 DIV 5; -- 2。

  • EXP(x) :返回e的x次方。

  • GREATEST(expr1, expr2, expr3, ...):返回列表中的最大值。SELECT GREATEST(3, 12, 34, 8, 25); -- 34

  • LEAST(expr1, expr2, expr3, ...):返回列表中的最小值。SELECT LEAST(3, 12, 34, 8, 25); -- 3。

  • MAX(expression):求最大值。

  • MIN(expression):求最小值。

  • MOD(x,y):返回x除以y以后的余数。SELECT MOD(5,2) -- 1

  • PI():圆周率。

  • POW(x,y):返回x的y次方。POWER(x,y)也是一样的。SELECT POW(2,3) -- 8

  • RAND():返回0到1的随机数。SELECT RAND() --0.93099315644334

  • ROUND(x):返回离x最近的整数,要四舍五入。SELECT ROUND(1.23456) --1

  • TRUNCATE(x,y):返回数值x保留到小数点后y位的值(与ROUND最大的区别是不会进行四舍五入)SELECT TRUNCATE(1.23456,3) -- 1.234

  • SQRT(x):返回平方根。SELECT SQRT(25) -- 5

  • SUM(expression):求和。

-------------mysql日期函数--------------------

  • ADDDATE(d,n):计算起始日期d加上n天的日期.例如:SELECT ADDDATE("2017-06-15", INTERVAL 10 DAY);->2017-06-25

  • SUBDATE(d,n):减去n天后的日期。

  • ADDTIME(t,n):时间t加上n秒的时间,

    SELECT ADDTIME('2011-11-11 11:11:11', 5)
    ->2011-11-11 11:11:16 (秒)
    
  • SUBTIME(t,n):减去n秒的时间。

  • curdate():返回当前日期。CURRENT_DATE()也一样。

  • CURRENT_TIME:返回当前时间。CURTIME()也一样。

  • LOCALTIME():返回当前日期和时间。LOCALTIMESTAMP()

  • CURRENT_TIMESTAMP():返回当前日期和时间,

    SELECT CURRENT_TIMESTAMP()
    -> 2018-09-19 20:57:43
    
  • DATE():从日期或日期时间表达式中提取日期值,

    SELECT DATE("2017-06-15");    
    -> 2017-06-15
    
  • DATEDIFF(d1,d2):计算日期d1->d2之间相隔的天数。

    SELECT DATEDIFF('2001-01-01','2001-02-02')
    -> -32
    
  • DATE_FORMAT(d,f):按表达式f的要求显示日期d

    SELECT DATE_FORMAT('2011-11-11 11:11:11','%Y-%m-%d %r')
    -> 2011-11-11 11:11:11 AM
    
  • DATE_SUB(date,INTERVAL expr type):函数从日期减去指定的时间间隔。select date_sub(now(),interval 2 day)--->返回当前日期的两天前的日期。

  • DAY(d):返回日期值d的日期部分,例如select day(now())返回当前日期的天数。

  • DAYNAME(d):返回日期d是星期几,如Monday,Tuesday。

  • MONTHNAME(d):返回日期当中的月份名称,如Janyary。

  • DAYOFWEEK(d):日期d今天是星期几,1星期日,2星期一,以此类推

  • DAYOFMONTH(d):计算日期d是本月的第几天。

  • DAYOFYEAR(d):计算日期d是本年的第几天

  • EXTRACT(type FROM d):从日期d中获取指定的值,type指定返回的值。例如:select extract(day from now())。从当前时间中拉取天数。

  • LAST_DAY(d) :返回指定日期的最后一天。例如:select last_day(now())--->2019-08-31

  • MAKEDATE(year, day-of-year):基于给定参数年份year和所在年中的天数序号day-of-year返回一个日期,例如:

    SELECT MAKEDATE(2017, 3);
    -> 2017-01-03
    
  • MAKETIME(hour, minute, second):组合时间,参数分别为小时、分钟、秒。

    SELECT MAKETIME(11, 35, 4);
    -> 11:35:04
    
  • MINUTE(t):获取分钟值。

  • SECOND(t):获取秒钟值。

  • MONTH(d):返回日期d中的月份值,1到12。

  • NOW():返回当前日期和时间。

  • sysdate():返回当前日期和时间。

  • PERIOD_ADD(period, number):为年-月组合日期添加一个时段,SELECT PERIOD_ADD(201703, 5); --->201708。

  • PERIOD_DIFF(period1, period2):返回两个时段之间的月份差值,SELECT PERIOD_DIFF(201710, 201703);--->7.

  • QUARTER(d):返回日期d是第几季节,返回1到4

  • STR_TO_DATE(string, format_mask):将字符串转变为日期。SELECT STR_TO_DATE("August 10 2017", "%M %d %Y");--->2017-08-10

  • TIMEDIFF(time1, time2):计算时间差值。

  • WEEK(d):计算日期d是本年的第几个星期,范围是0到53.WEEKOFYEAR(d)也是一样的。

  • WEEKDAY(d):日期 d是星期几,0表示星期一,1表示星期二。

  • YEARWEEK(date, mode):返回年份及第几周(0到53),mode中0表示周天,1表示周一,以此类推。例如:select yearweek(now())。---201932

--------mysql高级函数---------------

case 表达式

​ when 条件 then 结果1

​ ····

​ else 结果

end

CASE表示函数开始,END表示函数结束。如果condition1成立,则返回result1, 如果condition2成立,则返回result2,当全部不成立则返回result,而当有一个成立之后,后面的就不执行了。

  • CAST(x AS type):转换数据类型。

    SELECT CAST("2017-08-29" AS DATE);
    -> 2017-08-29
    
  • COALESCE(expr1, expr2, ...., expr_n):返回参数中的第一个非空表达式(从左向右)

  • CONNECTION_ID():返回服务器的连接数

  • IF(expr,v1,v2):如果表达式expr成立,返回结果v1;否则,返回结果v2。

  • ifnull(v1,v2):如果v1的值不为NULL,则返回v1,否则返回v2。

  • NULLIF(expr1, expr2):比较两个字符串,如果字符串expr1与expr2相等返回NULL,否则返回expr1

原文地址:https://www.cnblogs.com/jasonboren/p/11361838.html