mysql常用函数(补充一些知识点)
#mysql常用函数(补充一些知识点)
/*
函数:
数学函数
字符串函数
聚合函数
日期和时间函数
加密函数
控制流函数
*/
/*
注意:不要在条件里用函数,该列将无法使用索引
*/
#
SELECT 3 + 3, 10 - 2, 5 * 6, 8 / 2, 8 % 2, 8 % 5;
SELECT 3 + 3, 10 - 2, 5 * 6, 8 / 2, 8 % 2, 8 % 5 FROM dual;
SELECT (3 + 3), (10 - 2), (5 * 6), (8 / 2), (8 % 2), (8 % 5);
SELECT (3 + 3), (10 - 2), (5 * 6), (8 / 2), (8 % 2), (8 % 5) FROM dual;
#
SELECT 3 + 3 / 3, (3 + 3) / 3;
SELECT 3 + 3 / 3, (3 + 3) / 3 FROM dual;
#
SELECT 3 + 3 / 3 * 2, (3 + 3) / 3 * 2 ;
SELECT 3 + 3 / 3 * 2, (3 + 3) / 3 * 2 FROM dual;
#
SELECT MOD(8,3), 8%3;
SELECT price, FLOOR(price), FLOOR(price) % 3, MOD(FLOOR(price),3) FROM book;
#
SELECT ROUND(5.897),ROUND(5.497),ROUND(5.487),ROUND(5.587);
SELECT ROUND(5.897, 2),ROUND(5.886, 2),ROUND(5.897, 3),ROUND(5.897, 4);
#FLOOR(num)向下取整(即返回小于num的最大整数值)
#以下结果全部是6
SELECT FLOOR(6.66),FLOOR(6.12),FLOOR(6.50),FLOOR(6.51),FLOOR(6.98);
SELECT FLOOR(6.66),FLOOR(6.12),FLOOR(6.50),FLOOR(6.51),FLOOR(6.98) FROM dual;
#CEILING(num)向上取整(即返回大于num的最小整数值)
#以下结果全部是7
SELECT CEILING(6.66),CEILING(6.12),CEILING(6.50),CEILING(6.51),CEILING(6.98);
SELECT CEILING(6.66),CEILING(6.12),CEILING(6.50),CEILING(6.51),CEILING(6.98) FROM dual;
#
SELECT price, FLOOR(price) FROM book;
SELECT price, CEILING(price) FROM book;
#加密函数
SELECT PASSWORD('abc6666'),MD5('abc6666'),SHA('abc6666');
#LEFT(str,len)返回str字符串中最左边的len个字符
SELECT LEFT('江西省赣州市于都县', 6),
LEFT('江西省赣州市于都县', 9),
LEFT('江西省赣州市于都县', 12);
#POSITION()函数,POSITION()函数和LOCATE()函数效果一样,他们是同义词
SELECT POSITION('赣' IN '江西省赣州市于都县');
SELECT LOCATE('赣','江西省赣州市于都县');
#函数可以嵌套
#返回@前面的字符串
SELECT LEFT('江西省赣州市@于都县', POSITION('@' IN '江西省赣州市@于都县') - 1);
SELECT LEFT('江西省赣州市@于都县', LOCATE('@', '江西省赣州市@于都县') - 1);
#RAND()函数返回0-1之间的随机数
SELECT RAND();
#返回5-10之间的小数
SELECT RAND() * 5 + 5;
#返回5-10之间的整数
SELECT FLOOR(RAND() * 5 + 5);
#
SELECT RAND(2),RAND(5),RAND(9);
#
SELECT PI();
#
SELECT 5 + 9;
SELECT 4 + 8 FROM DUAL;
#查看当前时间
SELECT NOW();
SELECT NOW() FROM dual;
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d');
SELECT DATE_FORMAT(NOW(),'%Y/%m/%d');
SELECT DATE_FORMAT(NOW(),'%Y\%m\%d');
SELECT DATE_FORMAT(NOW(),'%y-%m-%d');
SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日');
SELECT DATE_FORMAT(NOW(), '%y年%m月%d日');
#查看当前时间
SELECT SYSDATE();
SELECT SYSDATE() FROM dual;
SELECT DATE_FORMAT(SYSDATE(),'%Y-%m-%d');
SELECT DATE_FORMAT(SYSDATE(),'%Y/%m/%d');
SELECT DATE_FORMAT(SYSDATE(),'%Y\%m\%d');
SELECT DATE_FORMAT(SYSDATE(),'%y-%m-%d');
SELECT DATE_FORMAT(SYSDATE(), '%Y年%m月%d日');
SELECT DATE_FORMAT(SYSDATE(), '%y年%m月%d日');
#
SELECT CURDATE(),CURRENT_DATE();
SELECT CURTIME(),CURRENT_TIME(),CURRENT_TIMESTAMP();
#返回一年中的季度(1-4)
SELECT QUARTER(CURDATE());
#返回月份名
SELECT MONTHNAME(CURDATE());
#查看当前库,当前用户,数据库版本
SELECT DATABASE(),USER(),VERSION();
#ABS()函数是取绝对值
SELECT ABS(-9),ABS(9);
#BIN()函数返回二进制 OCT()函数返回八进制 HEX()函数返回十六进制
SELECT BIN(12), CONV(12,10,2), OCT(12), HEX(12);
SELECT BIN(NULL), CONV(NULL,10,2), OCT(NULL), HEX(NULL);
SELECT HEX(255),HEX('abc');
#返回字符的ASCII值
SELECT ASCII('A'),ASCII('a'),ASCII('B'),ASCII('b');
#返回字符串的比特长度
SELECT BIT_LENGTH('江西省赣州市于都县'),BIT_LENGTH('江西省于都县'),BIT_LENGTH('于都县');
#字符串拼接
SELECT CONCAT('江西省','赣州市','于都县'); #结果为江西省赣州市于都县
#字符串拼接,并用-中划线间隔
SELECT CONCAT_WS('-','江西省','赣州市','于都县'); #结果为江西省-赣州市-于都县
#LCASE()函数和LOWER()函数效果一样,都是将字符改变成小写
SELECT LCASE('ABC'), LOWER('ABC');
SELECT LCASE('DEF江西省赣州市于都县'), LOWER('DEF江西省赣州市于都县');
SELECT LCASE('GHJK壹貳叁肆'), LOWER('GHJK壹貳叁肆');
#
SELECT INSERT('中国赣州市于都县', 1, 2, '江西省');