深入浅出MySQL(七)
MySQL函数操作
数学函数的使用
常用的数学函数见表所示:
![](https://img.haomeiwen.com/i16743411/df913db4a3d49aba.png)
因为数学函数操作比较简单,这里面就不给予演示了。
字符串函数
得到字符串的字符数
得到字符串的字符数:CHAR_LENGTH()
测试用例:
SELECT CHAR_LENGTH('i love you');
![](https://img.haomeiwen.com/i16743411/9fa56a7e08ebbf88.png)
得到字符串的长度(字节)
得到字符串的长度:LENGTH()
;在MySQL中UTF8的编码下,一个中文为2个字节,测试用例如下:
-- 得到字符串的长度
-- LENGTH()
-- 中文在UTF8下占2个字节的长度
SELECT CHAR_LENGTH('你好啊'),LENGTH('你好啊');
![](https://img.haomeiwen.com/i16743411/3c9644a64195cede.png)
将字符串合并成一个字符串
使用CONCAT(s1,s2,...)
可以将字符串合并成一个字符串,如果字符串中包含NULL,那么返回的拼接结果就是NULL
测试用例如下:
SELECT CONCAT('a','b','c');
SELECT CONCAT('a','b','c',NULL);
![](https://img.haomeiwen.com/i16743411/b6bdbb24ba2c1901.png)
以指定分隔符拼接字符串
使用函数CONCAT_WS(x,s1,s2,s3,...)
;
测试用例如下:
SELECT CONCAT_WS('-','a','b','c');
SELECT CONCAT_WS('-','a','b','c',NULL);
SELECT CONCAT_WS(NULL,'a','b','c');
![](https://img.haomeiwen.com/i16743411/7e76662319934666.png)
将字符串转换大小写
将字符串转换为大写 使用 UPPER() | UCASE()
将字符串转换为小写 使用 LOWER() | LCASE()
测试用例如下:
SELECT UPPER('hello'),LCASE('HELLO');
![](https://img.haomeiwen.com/i16743411/1750aab726fd7ae2.png)
字符串的反转
字符串反转:REVERSE()
测试用例:
SELECT REVERSE('abc');
![](https://img.haomeiwen.com/i16743411/400dadd3defa6f82.png)
返回字符串的前几个字符或者后几个字符
使用语句:LEFT() | RIGHT()
返回字符串的前几个字符或者后几个字符
测试语句:
SELECT LEFT('hello',2),RIGHT('hello',2);
![](https://img.haomeiwen.com/i16743411/dd6b945d28a6b966.png)
用字符串填充到指定的长度
使用语句:LPAD() | RPAD()
测试语句:
SELECT LPAD('abc',10,'?');
SELECT RPAD('abc',10,'!');
![](https://img.haomeiwen.com/i16743411/6880ae2a54f97558.png)
去掉字符串两端的空格
去掉字符串两端的空格:TRIM()
去掉字符串左端的空格:LTRIM()
去掉字符串右端的空格:RTRIM()
测试语句:
SELECT CONCAT('*',TRIM(' abc '),'*'),
CONCAT('*',LTRIM(' abc '),'*'),
CONCAT('*',RTRIM(' abc '),'*');
![](https://img.haomeiwen.com/i16743411/8c235d03bae32c95.png)
重复指定字符串的字数
使用语句:REPEAT(s,times)
测试语句:
SELECT REPEAT('hello',3);
![](https://img.haomeiwen.com/i16743411/7f2a64c2fb1597f2.png)
字符串替换
使用语句:REPLACE(s,targetS,replaceS)
测试语句:
SELECT REPLACE('hello world','hello','fuck');
![](https://img.haomeiwen.com/i16743411/378317bc5593a80e.png)
截取字符串
截取字符串使用语句:SUBSTRING(s,from,len)
注意MySQL的fromIndex是从1开始的
测试语句:
SELECT SUBSTRING('abcdef',1,3);
![](https://img.haomeiwen.com/i16743411/730b48fc35fb99cc.png)
比较字符串
比较字符串使用语句STRCMP(s1,s2)
测试语句:
SELECT STRCMP('a','b');
SELECT STRCMP('a','a');
SELECT STRCMP('b','a');
![](https://img.haomeiwen.com/i16743411/d198be7fedfbb045.png)
日期时间常用函数
返回当前日期
返回当前日期使用函数:CURDATE() | CURRENT_DATE()
测试语句:
SELECT CURDATE(),CURRENT_DATE();
![](https://img.haomeiwen.com/i16743411/7ad1eb29240dcf10.png)
返回当前时间
返回当前时间使用函数:CURTIME() | CURRENT_TIME()
测试语句:
SELECT CURTIME(),CURRENT_TIME();
![](https://img.haomeiwen.com/i16743411/a9cc9eebf5afbaff.png)
返回当前的日期时间
返回当前的日期时间函数有三个:
NOW()
CURRENT_TIMESTAMP()
SYSDATE()
测试语句:
SELECT NOW(),CURRENT_TIMESTAMP(),SYSDATE();
![](https://img.haomeiwen.com/i16743411/db1a840f28a86d62.png)
返回年月日小时分钟秒
测试语句:
SELECT YEAR(NOW()),MONTH(NOW()),DAY(NOW()),HOUR(NOW()),MINUTE(NOW()),SECOND(NOW());
测试结果:
![](https://img.haomeiwen.com/i16743411/c6aaf0ab9d8dba98.png)
返回月份的名称
返回月份的名称使用语句MONTHNAME()
测试语句:
SELECT MONTH(CURRENT_DATE()),MONTHNAME(CURRENT_DATE());
测试结果:
![](https://img.haomeiwen.com/i16743411/2a82ada4c44ce843.png)
返回星期几
返回星期几使用语句:DAYNAME()
测试语句:
SELECT DAYNAME(NOW());
测试结果:
![](https://img.haomeiwen.com/i16743411/e8b95424a2b35089.png)
返回一周内的第几天
其中定义星期日为第一天;使用语句:DAYOFWEEK
测试语句:
SELECT DAYOFWEEK(NOW());
![](https://img.haomeiwen.com/i16743411/b4fef1811a05a740.png)
返回一年中的第几个星期
使用语句WEEK()
测试语句:
SELECT WEEK(NOW());
![](https://img.haomeiwen.com/i16743411/248cbaed18925cc6.png)
计算两个日期相差的天数
计算两个日期相差的天数使用DATEDIFF()
语句
测试语句:
SELECT DATEDIFF(CURDATE(),'2020-01-01');
测试结果:
![](https://img.haomeiwen.com/i16743411/826427ed76621deb.png)
其他常用函数
获取版本号和当前连接ID号
测试语句:
SELECT VERSION(),CONNECTION_ID();
测试结果:
![](https://img.haomeiwen.com/i16743411/2496db87267fd059.png)
获取当前登录的用户
获取当前登录的用户函数有:
USER()
CURRENT_USER()
SYSTEM_USER()
SESSION_USER()
测试语句:
SELECT USER(),CURRENT_USER(),SYSTEM_USER(),SESSION_USER();
测试结果:
![](https://img.haomeiwen.com/i16743411/58e45c789992e3b5.png)
得到上一步插入操作产生的AUTO_INCREMENT值
使用函数:LAST_INSERT_ID()
测试:对如下user表进行操作
![](https://img.haomeiwen.com/i16743411/168fdbff5ecc3697.png)
新插入一条记录:
![](https://img.haomeiwen.com/i16743411/46a8b6c491d58bb5.png)
查询 LAST_INSERT_ID
![](https://img.haomeiwen.com/i16743411/7e10da02172beedb.png)
加密算法
- MD5加密算法
使用函数:MD5()
; MD5会对内容加密成32位长度的新字符串 - PASSWORD
PASSWORD函数是MySQL内置默认的密码加密算法
测试用例如下:
-- MD5() 加密算法 加密成32位的字符串
SELECT MD5('kim');
-- MySQL默认的PASSWORD():密码加密算法
SELECT PASSWORD('root');
测试结果如下:
![](https://img.haomeiwen.com/i16743411/7416a2d0e9146e91.png)