mysql函数
Mysql中的常用函数种类:
mysql中提供了很多函数,可以简化操作。常见的函数类型有数学函数,字符串函数,日期和时间函数,条件判断函数,系统信息函数,加密函数,格式化函数。
数学函数:
函数名 | 注释 | 使用方法 | 返回 |
CEIL(X)/DEILING(X) | 返回大于或等x的最小整数 | select ABS(-1) | 1 |
CEIL(X)/DEILING(X) | 返回大于或等x的最小整数 | select CEIL(1.5) | 2 |
FLOOR(X) | 返回小于或等于x的最大整数 | select FLOOR(1.5) | 1 |
EXP(X) | 返回e的x次方,对数 | select exp(3) | 20.085536923188 |
GREATEST(expr1,expr2) | 返回列表中最大的值 | select GREATEST(34,25) | 34 |
LEAST(expr1,expr2) | 返回列表中最小的值 | select LEAST(34,25) | 25 |
LN(x) | 返回x的自然对数 | select LN(2) | 0.6931471805599453 |
LOG(x) | 返回自然对数(以e为底的对数) | select LOG(20.085536923188) | 3 |
POW(x,y)/POWER(X,Y) | 返回x的y次方 | select POW(2,2) | 4 |
RAND() | 返回一个0-1的随机数 | select RAND() | 小于1的随机小数 |
SIGN(x) | 返回x的符号 | select SIGN(x) | x为负数,0,正数分别返回-1,0,1 |
SQRT(X) | 返回x的平方根 | select SQRT(25) | 5 |
TRUNCATE(x,y) |
返回x保留小数点到y位的值(不进行四舍五入) | select TRUNCATE(1.2556,2) | 1.25 |
字符串函数:
函数名 | 注释 | 使用方法 | 返回 |
ASCII() | 返回字符串的第一个字符的ASCII码 | select ASCII(‘ADF’) | 65 |
LENGTH() | 返回字符串长度 | select LENGTH('ASDF') | 4 |
CHAR_LENGTH() | 返回字符串长度 | select CHAR_LENGTH('ASDF') | 4 |
VARCHAR_LENGTH() | 返回字符串长度 | select VACHAR_LENGTH('ASDF') | 4 |
CONCAT(s1,s2,s3) | 拼接字符串 | select CONCAT('hello','word') | helloword |
FIND_IN_SET(s1,s2) |
返回在字符传中s2中与s1匹配的字符传位置 |
select FIND_IN_SET('c','a,c,v') | 2 |
FORMAT(x,n) | 可以将数字x进行格式化,将x保留到小数点n位,最后一位四舍五入 | select FORMAT(11123.456,2) | 11,123.46 |
INSERT(s1,n,m,s2) | 将s2替换s1的n位置开始长度为m的字符串 | select INSERT('baidu.com',1,5,'nihao') | nihao.com |
LOCATE(s1,s) | 从字符串s中获取s1的开始位置 | select LOCATE('sr','dsfsr') | 4 |
LCASE(s)/LOWER(s) | 将字符串s的所有字母变成小写字母 | select LCASE(‘DDSS’) | ddss |
UCASE(s)/UPPER(s) | 将字符串s的字母变成大写字母 | select UCASE(‘ddd’) | DDD |
TRIM(s) |
将字符串s的左右空格删掉 | select TRIM(‘ run ’) | run |
LTRIM(s) | 将字符串s的左空格删掉 | select LTRIM(‘ run ’) | run |
RTRIM(s) | 将字符串s的右边空个删掉 | select LTRIM(‘ run ’) | run |
SUBSRT(s,n,m) | 从字符串s的处截取m长度的子字符串 | select SUBSRT('sdff',3) | sdf |
POSITION(s1 in s) | 从字符串s中获取s1的开始位置 | select POSITION('a' in 'bac') | 2 |
REPEAT(s,n) | 将字符串s重复n次,且自动拼接 | select REPEAT(‘dds’,2) | ddsdds |
REVESE(s) | 字符串反转 | select REVESE(‘asdf’) | fdsa |
STRCMP(s1,s2) | 比较s1和s2长度和内部元素,如果相等就返回0,若s1>s2返回1,若s1<s2就返回-1 | select STRCMP('asf','asf') | 0 |
日期函数:
函数名 | 注释 | 使用方法 | 返回 |
CURDATE/CURRENT_DATE | 返回当前日期 | select CURDATE() | 2020-02-02 |
CURRENT_TIME/CURTIME | 返回当前时间 | select CURTIME() | 21:21:23 |
CURRENT_TIMESTRAP | 返回当前日期和时间 | select CURREND_TIMESTRAP() |
2020-02-02 21:23:24 |
ADDDATE(d,n) | 计算起始日期d加上n天的日期 | select ADDDATE(‘2020-02-02’,10 ) | 2020-02-12 |
ADDTIME(t,n) | 计算其实时间t加上n秒的时间 | select ADDTIME('2020-02-02 21:28:35',5) | 2020-02-02 21:28:40 |
DATE() | 从日期或时间表达式中提取日期值 | select DATE('2020-02-02 22:24:33') | 2020-02-02 |
DAY(d) | 返回日期值d的日期部分 | select DAY('2020-02-02') | 2 |
DATEDIFF(d1,d2) | 计算d1和d2之间相隔的天数 | select DATEDIFF('2020-02-02','2021-02-02') | -366 |
DATE_FORMAT | 按照表达式显示日期 | select DATE_FORMAT('2020.02.02 22:29:35','%Y-%m-%d %r') | 2020-02-02 22:29:35 PM |
DAYNAME(d) | 返回日期d是星期几 | select DAYNAME('2020-02-02') | Sunday |
DAYOFMONTH(d) | 返回日期d是本月的第几天 | select DAYOFMONTH('2020-02-02') | 2 |
DAYOFWEEK(d) | 返回日期d是星期几,星期日是1,星期六是7,依次类推 | select DAYOFWEEK('2020-02-02') | 1 |
DAYOFYEAR(d) | 返回日期d是本年的第几天 | select DAYOFYEAR('2020-02-01') | 32 |
extract(type FROM d) | 从日期d中获取指定的值 | select EXTRACT(day FROM '2020-02-01') | 1 |
UNIX_TIMESTAMP | 时间戳,不传参数默认当前时间戳 | select UNIX_TIMESTAMP() | 1580654832 |
FROM_UNIXTIME | 时间戳转结构化时间 | select FROM_UNIXTIME(UNIX_TIMESTAMP()) | 2020-02-02 22:46:28 |
条件判断函数:
MySql中有4个函数用来进行条件操作,进行流程控制,也叫做流程控制函数,这些函数可以实现sql的条件逻辑。
1 CASE WHEN X THEN Y ELSE N END
当x为真时,返回y,否则返回n
2 IF(x,y,n)
当x为真,返回y,否则返回n
3 IF(arg1,arg2)
当arg1不是空,则返回arg1,否则返回arg2
4 NULLIF(arg1,arg2)
当arg1=arg2返回null,否则返回arg1
mysql中的多路分支,case函数
类型转化函数:
mysql中的cast函数可以转化数据类型
select cast(now() as signed INTEGER),curdate()+0;
系统函数:
查看当前数据库名称 -- select DATABASE() 将表达式pow(2,4)运行20次 -- select BENCHMARK(20,(POW(2,4))) 查看链接数 -- select CONNECTION_ID() 查看最后一个select查询进行检索的总行数 -- select FOUND_ROWS() 查看当前登录用户名 -- select USER(); -- select SYSTEM_USER() 查看数据库版本 select VERSION()
加密函数:
-- 返回用秘钥key_str对字符串str 利用加密算法后的二进制结果 -- select AES_ENCRYPT(str,key_str) -- 返回用秘钥key_str对字符串crypt_str解密密后的结果 -- select AES_DECRYPT(crypt_str,key_str) -- 使用pass_str作为解密加密 -- select DECODE(crypt_str,pass_str) -- 使用salt 加密字符串 -- select ENCRYPT(str[,salt]) -- 使用pass_str作为秘钥加密,二进制 -- select ENCODE(str,pass_str) -- 使用md5加密 select MD5(str) -- 返回str加密版本,不可逆 select PASSWORD(str) -- 计算字符串str的安全散列算法校验和 select SHA(str)