mysql 函数

一、数学函数
函数描述示列
ABS(x)求x绝对值SELECTABS(-100);
PI()返回圆周率兀SELECT PI();
SQRT(x)平方根函数SELECT SQRT(4);
MOD(x, y)求余函数SELECT MOD(5, 2);
CEIL(x)返回一个不小于x的最小整数SELECT CEIL(1.253);
CEILING(x)返回一个不小于x的最小整数SELECT CEILING(1.253);
FLOOR(x)返回不大于x的最大整数SELECT FLOOR(1.253);
RAND()返回一个大于等于0小于等于1之间的一个随机数SELECT RAND();
RAND(x)同一个x每次产生相同的随机数SELECT RAND(1);
ROUND(x)返回最接近参数x的整数SELECT ROUND(x);
ROUND(x, y)返回最接近参数x的整数,其值保留到小数点后y位SELECT ROUND(2.663, 1);
TRUNCATE(x,y)返回舍去至小数点后y位的数字xSELECT TRUNCATE(19.99, -1); 结果为10
SIGN(x)返回x的正负号,整数位1,负数为0SELECT SIGN(-10); 结果为0
POW(x, y)返回x的y次方SELECT POW(2, 2);
POWER(x, y)返回x的y次方SELECT POWER(2, 2);
EXP(x)返回e的x次方SELECT EXP(3);
LOG(x)返回x的自然对数,x相对于基数e的对数SELECT LOG(8);
LOG10(x)返回x的基数为10的对数SELECT LOG10(10);
RADIANS(x)将x由角对转化为弧度SELECT RADIANS(90);
DEGREES(x)将参数由弧度转化为角度SELECT DEGREES(PI()/2);
SIN(x)返回x的正弦,x为弧度SELECT SIN(1);
ASIN(x)返回x的反正弦,x为弧度SELECT ASIN(2);
COS(x)返回x的余弦,x为弧度SELECT COS(2);
ACOS(x)返回x的反余弦,x为弧度SELECT ACOS(x);
TAN(x)返回x的正切,x为弧度SELECT TAN(0.3);
ATAN(x)返回x的反正切,x为弧度SELECT ATAN(1);
COT(x)返回x的余切,x为弧度SELECT COT(0.3);
二、字符串函数
函数描述示列
CHAR_LENGTH(str)返回str的字符个数SELECT CHAR_LENGTH(‘abc’); 结果为: 3
CONCAT(s1, s2,…)拼接字符s1,s2…SELECT CONCAT(‘a’,‘b’); 结果为: ab
CONCAT_WS(x, s1, s2…)拼接字符s1,s2…,并以x为分割符SELECT CONCAT_WS(’*’, ‘a’, ‘b’); 结果为: a*b
INSERT(s1, x, len, s2)从字符s1第x个字符,替换len个字符为s2SELECT INSERT(‘Quest’, 3, 10, ‘Wh’); 结果为: QuWh
LOWER(str)把str转化为小写SELECT LOWER(‘ABC’); 结果为:abc
LCASE(str)把str转化为小写SELECT LCASE(‘ABC’); 结果为:abc
UPPER(str)把srt转化为大写SELECT UPPER(‘abc’); 结果为:ABC
UCASE(str)把srt转化为大写SELECT UCASE(‘abc’); 结果为:ABC
LEFT(s, n)返回字符串s最左边的n个字符SELECT LEFT(‘football’, 5); 结果为: footb
RIGNT(s, n)返回字符串s最右边的n个字符SELECT RIGNT’football’, 4); 结果为: ball
LPAD(s1, len, s2)返回字符串s1,其左边有字符s2填补到len字符长度SELECT LPAD(‘hello’, 7, ‘??’); 结果为:??hello)
RPAD(s1, len, s2)返回字符串s1,其右边有字符s2填补到len字符长度SELECT RPAD(‘hello’, 7, ‘??’); 结果为:hello??)
LTRIM(s)删除字符串s最左边的空格SELECT LTRIM(’ abc’); 结果为:abc
RTRIM(s)删除字符串s最右边的空格SELECT RTRIM('abc '); 结果为:abc
TRIM(s)删除字符串s的左右的空格SELECT TRIM(’ abc '); 结果为:abc
TRIM(s1 FROM s)删除字符s两边的s1SELECT TRIM(‘ab’ FROM ‘abhelloab’);结果为:hello
REPEAT(s, n)返回n个字符s拼接的新字符串SELECT REPEAT(‘A’, 2);结果为:AA
SPACE(n)返回由n个空格组成的字符串SELECT CONCAT(’(’, SPACE(2), ‘)’);结果为:( )
REPLACE(s, s1, s2)使用字符串s2替换字符串s中的字符串s1SELECT REPLACE(‘abc’, ‘a’, ‘x’);结果为:xbc
STRCMP(s1, s2)s1与s2相等返回0,s1>s2返回1, s1<s2返回-1SELECT STRCMP(‘txt’, ‘txt’);结果为:0
SUBSTRING(s,n,len)
MID(s,n,len)
从字符串s返回一个长度同len字符相同的子字符 串,起始于位置nSELECT SUBSTRING(‘breakfast’,5);结果为:kfast
LOCATE(strl.str)
POSITION(strl IN str)
INSTR(str, str 1)
返回子字符串 strl在字符串str中的开始位置SELECT LOCATE(‘a’,‘fdxa’);结果为:4
REVERSE(s)将字符串s反转,返回的字符串的顺序和s字符串顺序相反SELECT REVERSE(‘abc’);结果为:cba
ELT(n,s1, s2, s3…)返回第n个字符,若没有第n个字符则返回NULLSELECT ELT(2, ‘x’, ‘a’, ‘b’);结果为:a
FIELD(s, s1, s2, …)返回字符串s第一个出现的位置SELECT FIELD(‘a’, ‘b’, ‘c’, ‘a’);结果为:3
FIND_IN_SET(s1, s2)返回字符串s1在字符串s2中出现的位置SELECT FIND_IN_SET(‘a’, ‘sssas,x,hello,a’);结果为:4
MAKE_SET(x, s1, s2…)返回由x的二进制数指定的相应位的字符串组成的字符串,s1对应0,s2对应01SELECT MAKE_SET(1|4, ‘hello’, ‘nice’, ‘world’);结果为:hello, world
三、日期函数
函数描述示列
ADDDATE(d,n)计算起始日期 d 加上 n 天的日期SELECT ADDDATE(“2017-06-15”, INTERVAL 10 DAY); ->2017-06-25
ADDTIME(t,n)时间 t 加上 n 秒的时间SELECT ADDTIME(‘2011-11-11 11:11:11’, 5)->2011-11-11 11:11:16 (秒)
CURDATE()返回当前日期SELECT CURDATE();-> 2018-09-19
CURRENT_DATE()返回当前日期SELECT CURRENT_DATE();-> 2018-09-19
CURRENT_TIME返回当前时间SELECT CURRENT_TIME();-> 19:59:02
CURRENT_TIMESTAMP()返回当前日期和时间SELECT CURRENT_TIMESTAMP()-> 2018-09-19 20:57:43
CURTIME()返回当前时间SELECT CURTIME();-> 19:59:02
DATE()从日期或日期时间表达式中提取日期值SELECT DATE(“2017-06-15”); -> 2017-06-15
DATEDIFF(d1,d2)计算日期 d1->d2 之间相隔的天数SELECT DATEDIFF(‘2001-01-01’,‘2001-02-02’)-> -32
DATE_ADD(d,INTERVAL expr type)计算起始日期 d 加上一个时间段后的日期SELECT ADDDATE(‘2011-11-11 11:11:11’,1)-> 2011-11-12 11:11:11 (默认是天)
DATE_FORMAT(d,f)按表达式 f的要求显示日期 dSELECT 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)函数从日期减去指定的时间间隔。Orders 表中 OrderDate 字段减去 2 天:SELECT OrderId,DATE_SUB(OrderDate,INTERVAL 2 DAY) AS OrderPayDate FROM Orders
DAY(d)返回日期值 d 的日期部分SELECT DAY(“2017-06-15”);-> 15
DAYNAME(d)返回日期 d 是星期几,如 Monday,TuesdaySELECT DAYNAME(‘2011-11-11 11:11:11’)->Friday
DAYOFMONTH(d)计算日期 d 是本月的第几天SELECT DAYOFMONTH(‘2011-11-11 11:11:11’)->11
DAYOFWEEK(d)日期 d 今天是星期几,1 星期日,2 星期一,以此类推SELECT DAYOFWEEK(‘2011-11-11 11:11:11’)->6
DAYOFYEAR(d)计算日期 d 是本年的第几天SELECT DAYOFYEAR(‘2011-11-11 11:11:11’)->315
EXTRACT(type FROM d)从日期 d 中获取指定的值,type 指定返回的值SELECT EXTRACT(MINUTE FROM ‘2011-11-11 11:11:11’)-> 11
FROM_DAYS(n)计算从 0000 年 1 月 1 日开始 n 天后的日期SELECT FROM_DAYS(1111)-> 0003-01-16
HOUR(t)返回 t 中的小时值SELECT HOUR(‘1:2:3’)-> 1
LAST_DAY(d)返回给给定日期的那一月份的最后一天SELECT LAST_DAY(“2017-06-20”);-> 2017-06-30
LOCALTIME()返回当前日期和时间SELECT LOCALTIME()-> 2018-09-19 20:57:43
LOCALTIMESTAMP()返回当前日期和时间SELECT LOCALTIMESTAMP()-> 2018-09-19 20:57:43
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
MICROSECOND(date)返回日期参数所对应的微秒数SELECT MICROSECOND(“2017-06-20 09:34:00.000023”);-> 23
MINUTE(t)返回 t 中的分钟值SELECT MINUTE(‘1:2:3’)-> 2
MONTHNAME(d)返回日期当中的月份名称,如 JanyarySELECT MONTHNAME(‘2011-11-11 11:11:11’)-> November
MONTH(d)返回日期d中的月份值,1 到 12SELECT MONTH(‘2011-11-11 11:11:11’)->11
NOW()返回当前日期和时间SELECT NOW()-> 2018-09-19 20:57:43
PERIOD_ADD(period, number)为 年-月 组合日期添加一个时段SELECT PERIOD_ADD(201703, 5);-> 201708
PERIOD_DIFF(period1, period2)返回两个时段之间的月份差值SELECT PERIOD_DIFF(201710, 201703);-> 7
QUARTER(d)返回日期d是第几季节,返回 1 到 4SELECT QUARTER(‘2011-11-11 11:11:11’)-> 4
SECOND(t)返回 t 中的秒钟值SELECT SECOND(‘1:2:3’)-> 3
SEC_TO_TIME(s)将以秒为单位的时间 s 转换为时分秒的格式SELECT SEC_TO_TIME(4320)-> 01:12:00
STR_TO_DATE(string, format_mask) 将字符串转变为日期SELECT STR_TO_DATE(“August 10 2017”, “%M %d %Y”);-> 2017-08-10
SUBDATE(d,n)日期 d 减去 n 天后的日期SELECT SUBDATE(‘2011-11-11 11:11:11’, 1)->2011-11-10 11:11:11 (默认是天)
SUBTIME(t,n)时间 t 减去 n 秒的时间SELECT SUBTIME(‘2011-11-11 11:11:11’, 5)->2011-11-11 11:11:06 (秒)
SYSDATE()返回当前日期和时间SELECT SYSDATE()-> 2018-09-19 20:57:43
TIME(expression)提取传入表达式的时间部分SELECT TIME(“19:30:10”);-> 19:30:10
TIME_FORMAT(t,f)按表达式 f 的要求显示时间 tSELECT TIME_FORMAT(‘11:11:11’,’%r’) 11:11:11 AM
TIME_TO_SEC(t)将时间 t 转换为秒SELECT TIME_TO_SEC(‘1:12:00’)-> 4320
TIMEDIFF(time1, time2)计算时间差值SELECT TIMEDIFF(“13:10:11”, “13:10:10”);-> 00:00:01
TIMESTAMP(expression, interval)单个参数时,函数返回日期或日期时间表达式;有2个参数时,将参数加和SELECT TIMESTAMP(“2017-07-23”, “13:10:11”);-> 2017-07-23 13:10:11
TO_DAYS(d)计算日期 d 距离 0000 年 1 月 1 日的天数SELECT TO_DAYS(‘0001-01-01 01:01:01’)-> 366
WEEK(d)计算日期 d 是本年的第几个星期,范围是 0 到 53SELECT WEEK(‘2011-11-11 11:11:11’)-> 45
WEEKDAY(d)日期 d 是星期几,0 表示星期一,1 表示星期二SELECT WEEKDAY(“2017-06-15”);-> 3
WEEKOFYEAR(d)计算日期 d 是本年的第几个星期,范围是 0 到 53SELECT WEEKOFYEAR(‘2011-11-11 11:11:11’)-> 45
YEAR(d)返回年份SELECT YEAR(“2017-06-15”);-> 2017
YEARWEEK(date, mode)返回年份及第几周(0到53),mode 中 0 表示周天,1表示周一,以此类推SELECT YEARWEEK(“2017-06-15”);-> 201724
四、加密函数
函数描述示列
PASSWORD(str)加密字符串str,没有对应的解密函数SELECT PASSWORD(‘XSCW’);
MD5(str)为字符串算出一个MD5 128比特校验和SELECT MD5(‘abc’)结果为:900150983cd24fb0d6963f7d28e17f72
ENCODE(str,pswd_str)使用pswd_str作为密码,加密str。使用DECODE()解密结果,结果是一 个和str长度相同的二进制字符串。SELECT ENCODE(‘secret’, ‘cry’)
DECODE(str,pswd_str)解密 ENCODE函数加密的值SELECT DECODE(ENCODE(‘secret’, ‘cry’), ‘cry’);
五、其他函数
函数描述示列
FORMAT(x.n)将数字x格式化,并以四舍五入的方式保留小数点后n位,结果以字符串的形式返回。若n为0,则返回结果函数不含小数部分。SELECT FORMAT(12.652, 2);
CONV(N,from_base,to_base)返回值为数值N的字符串表示, from_base进制转化为to_base进制SELECT CONV(8, 8, 10);
INET_ATON(expr)把字符ip地址转化为整数,地址可以是4或8比特地址SELECT INET_ATON(‘127.0.0.1’);
INET_NTOA(expr)把整数ip地址转化为字符串SELECT INET_NTOA(2130706433);
BENCHMARK(count,expr)重复count次执行表达式exprSELECT BENCHMARK(5, PASSWORD(‘xxx’))
CONVERT(s1 USING s2)把s1转化为s2字符集SELECT CONVERT(‘string’ USING latin1);
CHARSET(str)查看str的字符集SELECT CHARSET(‘string’);
CAST(x AS type)
CONVERT(x, type)
把x转化为type类型的值SELECT CAST(100 AS CHAR(2));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

书香水墨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值