MySQL函数解读

发布时间 2023-10-23 23:58:35作者: 芊嵛

一、字符串函数

1.1.instr()

INSTR(str,substr)一共有两个参数str被查询字符,substr查询字符,查询时下标从1开始记,只查询第一次出现的地方,为查询到显示为0

一般用法

SELECT INSTR(str,substr) FROM dual;
-- dual亚元表,系统表,可以作为测试表使用

-- 查询'hahaheha'中是否有'eh',有返回6
SELECT INSTR('hahaheha','eh') FROM dual;

详细用法及特殊用例如下:

先创建表

DROP TABLE IF EXISTS `employee`;
CREATE TABLE `employee`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `xi` int NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
);

INSERT INTO `employee` VALUES (1001, '小红', 789123);
INSERT INTO `employee` VALUES (1002, '小白', 963258);
INSERT INTO `employee` VALUES (1003, '小绿', 987456);
INSERT INTO `employee` VALUES (1004, '小明', 753951);

示例

-- 查询xi中含有74的数据
SELECT * FROM employee WHERE INSTR(xi,'74')>0;
-- 相当于左右like查询
SELECT * FROM employee WHERE xi LIKE '%74%';

-- 相当于in的用法
SELECT * FROM employee WHERE INSTR('小白,小绿',name) > 0;
SELECT * FROM employee WHERE name IN('小白','小绿');

1.2.去除空格

LTRIMRTRIMTRIM

去左空格,去有空格,去两边空格

SELECT LTRIM(字段) FROM DUAL;

SELECT LTRIM('  芊嵛  ') FROM DUAL;
SELECT RTRIM('  芊嵛  ') FROM DUAL;
SELECT TRIM('  芊嵛  ') FROM DUAL;

结果:

-- 未了能看清空格我加了``
`芊嵛  `
`  芊嵛`
芊嵛

二、日期时间函数

2.1显示当前日期

-- 显示当前日期
SELECT CURRENT_DATE() FROM DUAL;
CURRENT_DATE()
2023-10-23

2.2显示当前时间

-- 显示当前时间
SELECT CURRENT_TIME() FROM DUAL;
CURRENT_TIME()
20:23:30

2.3显示当前日期和时间

-- 显示当前日期和时间
SELECT CURRENT_TIMESTAMP() FROM DUAL;

-- 显示当前日期和时间
SELECT NOW() FROM DUAL;
CURRENT_TIMESTAMP()
2023-10-23 20:23:30
NOW()
2023-10-23 20:29:13

2.4将已知日期和时间转换为日期

SELECT DATE('2023-10-23 20:30:15') FROM DUAL;
DATE('2023-10-23 20:30:15')
2023-10-23

2.5时间加/减时间

-- 加10分钟,后面的minute可以换成year那样就能加年了
SELECT DATE_ADD('2023-10-23 20:35:10' ,INTERVAL 10 MINUTE) FROM DUAL;

-- 减的话把DATE_ADD换成DATE_SUB

2.6相差多少天

-- 前减后
SELECT DATEDIFF('2005-11-11','2003-01-02') FROM DUAL;
-- 1044天

SELECT DATEDIFF('2005-11-11','2005-11-10') FROM DUAL;
-- 1天

2.7相差多少时间

-- 前减后
SELECT TIMEDIFF('20:10:03','19:11:10') FROM DUAL;
-- 00:58:53

2.8计算年龄

TIMESTAMPDIFF(YEAR, birth, NOW())
-- 能得出岁数

2.9返回1970-1-1到现在的毫秒数

SELECT UNIX_TIMESTAMP() FROM DUAL;

2.10把UNIX_TIMESTAMP()函数转换成具体日期格式

SELECT FROM_UNIXTIME(1698065850,'%Y-%m-%d') FROM DUAL;
SELECT FROM_UNIXTIME(1698065850,'%Y-%m-%d %H:%i%s') FROM DUAL;
FROM_UNIXTIME(1698065850,'%Y-%m-%d') FROM_UNIXTIME(1698065850,'%Y-%m-%d %H:%i%s')
2023-10-23 2023-10-23 20:5730

三、加密函数和系统函数

3.1查询用户

-- USER()
SELECT USER() FROM DUAL;

-- 返回用户@IP地址,如上述语句运行得到	root@localhost

3.2查看当前所用的数据库

-- DATABASE();
SELECT DATABASE();

3.2为字符串算出一个MD5 32的字符串,常用(用户密码)加密

-- a8105204604a0b11e916f3879aae3b0b
SELECT MD5('密码') FROM DUAL;


-- 长度为32
SELECT LENGTH(MD5('密码')) FROM DUAL;