MySQL函数

字符串函数
1.CHARSET(SET) 返回字串字符集
2.CONCAT(string2[]) 连接字串
3.INSTR(STRING,SUBSTRING) 返回substring在string中出现的位置,灭有则返回0
4.UCASE(string2) 转大写
5.LCASE(string2) 转小写
6.LEFT(string2,LENGTH) 从string2中的左边起取length个字符 有right右边取
7.LENGTH(STRING) string长度[按照字节]
8.REPLACE(str,search_str,replace_str) 在str中用replace_替代replace_str
9.STRCMP(string1,string2) 逐字符比较两字串大小
10.SUBSTRING(str,POSITION,[LENGTH]) 从str的position开始[从1开始计算],取length个字符
11.LTRIM(string2)RTRIM(string2)TRIM 去除前端空格后端空格 TRIM()左右两边都去。

演示:

查看字符集
SELECT CHARSET(`didian`) FROM `bb`;
拼接
SELECT CONCAT(`bumen`,'is',`didian`) FROM `bb`;
查看位置,从1开始。
DUAL 亚元表,是系统表 可以作为测试表使用
SELECT INSTR('root','ot') FROM DUAL;
只显示前面3个字符
SELECT LEFT(`didian`,3) FROM `bb`;
显示长度
SELECT LENGTH(`didian`) FROM `bb`;
替换
SELECT `id` , REPLACE(`name` , 'c' , 'C') FROM `yuangong`;
从第二个字符起,取两个字符
SELECT SUBSTRING(`didian`,2,2) FROM `bb`;
去空格
SELECT LTRIM('     asdf') FROM DUAL;
SELECT LTRIM('asdf       ') FROM DUAL;
SELECT LTRIM('     asdf      ') FROM DUAL;
首个字符大写
SELECT CONCAT(UCASE(LEFT(`didian`,1)),RIGHT(`didian`,LENGTH(`didian`)-1)) FROM `bb`;

数学函数
1.ABS(num) 绝对值
2.BIN (decimal_number) 十进制转二进制
3.CEILING(number2) 向上取整,得到比num2大的最小整数
4.CONV(number2,from_base,to_base) 进制转换
5.FLOOR(number2) 向下取整,得到比num2小的最大整数
6.FORMAT(NUMBER,decimal_places) 保留小数位数
7.HEX(decimalnumber) 转十六进制
8.LEAST(NUMBER,decimal_places) 求最小值
9.MOD(numerator,denominator) 求余
10.RAND([seed]) RAND([seed]) 其范围为0<=v<=1.0

SELECT ABS(-10) FROM DUAL;  结果为10
SELECT BIN(10) FROM DUAL; 1010
SELECT CEILING(1.4) FROM DUAL; 2
SELECT CONV(8,10,2) FROM DUAL; 1000 把8当成10进制,以2进制输出
SELECT FLOOR(1.1) FROM DUAL; 1
SELECT FORMAT(1.655,2) FROM DUAL; 1.66 四舍五入保留两位小数
SELECT LEAST(10,49,120,71,5) FROM DUAL; 5 输出最小值
SELECT MOD(10,3) FROM DUAL; 1
SELECT RAND() FROM DUAL; 随机数
SELECT RAND(3) FROM DUAL; 种子随机数

时间日期函数
1.CURRENT_DATE() 当前日期
2.CURRENT_TIME() 当前时间
3.CURRENT_TIMESTAMP() 当前时间:年月日时分秒
4.DATE(DATETIME) 返回datetime的日期部分
5.DATE_ADD(date2,INTERVAL d_value d_type) 在date2中加上日期或时间
6.DATE_SUB(date2,INTERVAL d_value d_type) 在date2上去掉一个时间
7.DATEDIFF(date1,date2) 两个日期差(天)
8.TIMEDIFF(date1,date2) 两个时间差(时分秒)
9.NOW() 当前时间
10.YEAR|MONTH|DATE(DATETIME) 年月日
11.FROM_UNIXTIME()

SELECT CURRENT_DATE() FROM DUAL;
SELECT CURRENT_TIME() FROM DUAL;
SELECT CURRENT_TIMESTAMP() FROM DUAL;

CREATE TABLE `sad`(
	`id` INT,
	`content` VARCHAR(30),
	`send_time` DATETIME);
INSERT INTO `sad`
	VALUE(1,'a',CURRENT_TIMESTAMP());
INSERT INTO `sad`
	VALUE(2,'b',CURRENT_TIMESTAMP());
INSERT INTO `sad`
	VALUE(4,'d',NOW());	
SELECT `id` , `content` , DATE(`send_time`) FROM `sad`; 时间只返回日期部分
SELECT `id` , `content` , TIME(`send_time`) FROM `sad`; 时间只返回时间部分
SELECT * FROM `sad`
	WHERE DATE_ADD(`send_time`,INTERVAL 20 MINUTE) >=NOW(); 这个时间加上20分钟后是否大于现在的时间。
SELECT DATEDIFF('2080-6-6','2000-3-22');
SELECT YEAR(NOW()),MONTH(NOW()),DAY(NOW()),MONTH('2021-6-6'),
	HOUR(NOW()),MINUTE(NOW()),SECOND(NOW()) FROM DUAL;
#1970-1-1到现在的秒数
SELECT UNIX_TIMESTAMP() FROM DUAL;
#时间戳转格式
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(),'%Y-%m-%d %H:%i:%s') FROM DUAL;

加密和系统函数

#当前登录到MySQL的用户
SELECT USER() FROM DUAL;
#查看当前使用的数据库名称
SELECT DATABASE() FROM DUAL;


SELECT MD5('lizifeng') FROM DUAL;
SELECT LENGTH(MD5('lizifeng')) FROM DUAL;

CREATE TABLE `myuser`
	(`id` INT,`name` VARCHAR(30) NOT NULL DEFAULT '',
	`pwd` CHAR(32) NOT NULL DEFAULT '');

INSERT INTO `myuser`
	VALUE(1,'lizifeng',MD5('mima'));

SELECT * FROM `myuser`;

SELECT PASSWORD('asd') FROM DUAL;

SELECT * FROM mysql.user;

流程控制函数

SELECT IF(TRUE,'yes','no') FROM DUAL;
返回yes
SELECT IF(FALSE,'yes','no') FROM DUAL;
返回no
SELECT IFNULL(NULL,'no_null') FROM DUAL;
返回null
SELECT IFNULL('you','no_null') FROM DUAL;
返回no_null
SELECT CASE 
	WHEN FALSE THEN '1'
	WHEN TRUETHEN '2'
	ELSE '3' END
返回2
例子:
SELECT ename,IF(comm IS NULL , 0.0, comm)
	FROM emp;
SELECT ename,IFNULL(comm,0.0)
	FROM emp;
SELECT ename,(SELECT CASE
	WHEN job = 'clerk' THEN '职员'
	WHEN job = 'manager' THEN '经理'
	WHEN job = 'salesman' THEN '销售'
	ELSE job END) AS 'job'
	FROM emp;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值