一、字符串函数

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;

结果:

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

1.3拼接字符串

-- 将多个字段串成一个大的字符串
concat(字段1,字段2,字段3):

1.4转换大小写

-- 将字段的英文字符都转成小写 等价 LCASE()
lower(字段) -- 将字段的英文字符都转成大写 等价 UCASE()
upper(字段)

1.5截取字符串

-- 从大的字符串截取一部分作为一个子串
substring(字段,起始位置,长度) substr()同 substring

二、日期时间函数

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;

四、流程控制函数

4.1.IF函数

类似于三元运算符

-- expr1 为判断条件TRUE为真 false 为假
-- expr2 当expr1为真时选择
-- expr3 当expr1为假时选择
-- 固定有三个参数不能省略
IF(expr1,expr2,expr3) -- 北京
SELECT IF(TRUE,'北京','上海') FROM DUAL; -- 上海
SELECT IF(FALSE,'北京','上海') FROM DUAL;

4.2.IFNULL函数

用于将NULL转换为有值

-- 0.0
SELECT IFNULL(NULL,0.0) FROM DUAL; -- 0.0
SELECT IFNULL(0.0,'芊嵛') FROM DUAL;

这个函数可以用上述IF函数来代替

IF(字段 IS NULL, 0.0, 字段)

4.3.CASE函数

相当于多分支语句

-- 当when_value1返回statement_list1
-- 当when_value2返回statement_list2
-- 否则返回statement_list3
CASE
WHEN when_value1 THEN statement_list1
WHEN when_value2 THEN statement_list2
ELSE
statement_list3
END -- 返回第一条
SELECT CASE
WHEN TRUE THEN '第一条'
WHEN FALSE THEN '第二条'
ELSE '第二条'
END FROM DUAL;

五、数学相关函数

5.1绝对值

ABS(num)

5.2十进制转二进制

BIN(num)

5.3向上取整 CEILING(num) >= num

CEILING(num)

5.4向下取整 FLOOR(num) <= num

FLOOR(num)

5.5进制转换

CONV(num,from_base,to_base)
-- 例如 CONV(8,10,2) 数字8十进制转换成2进制 1000

5.6保留固定小数位

FORMAT(num,小数位数)

-- 10.33
SELECT FORMAT(10.333,2) FROM DUAL;
-- 10.00
SELECT FORMAT(10,2) FROM DUAL;

5.7转十六进制

HEX(num)

-- A
SELECT HEX(10);

5.8最小值

LEAST(value1,value2,...)

-- 7
SELECT LEAST(10,8,11,7,15);

5.9求余

SELECT MOD(N,M)

-- 1
SELECT MOD(10,3);

5.10随机数

-- 范围0<=v<=1.0
SELECT RAND()

六、统计函数

6.1计数函数

COUNT()

-- COUNT(*) 可以统计NULL值
-- COUNT(字段) 不会统计NULL值

6.2求和函数

SUM()

6.3最大/最小值

MAX()
MIN()

6.4求平均值

AVG()
-- 注意NULL判断

MySQL函数解读的更多相关文章

  1. Mysql Explain 解读(基于MySQL 5.6.36)

    Mysql Explain 解读(基于MySQL 5.6.36) 1.语法 explain < table_name > #例子 explain select * from t3 wher ...

  2. Mysql - 函数

    Mysql提供的函数是在是太多了, 很多我都见过, 别说用了. 园子里面, 有人弄了一个比较全的. MYSQL函数 我这里会将他写的完全拷贝下来, 中间会插入一些自己项目中使用过的心得 一.数学函数 ...

  3. mysql连接查询,封装mysql函数

    连接查询 交叉连接语法: select  * | 字段列表 from 表1  cross join 表2 内连接: select *|字段列表 from 左表 inner join 右表 on 左表. ...

  4. MySQL 函数大全

    mysql函数大全 对于针对字符串位置的操作,第一个位置被标记为1. ASCII(str) 返回字符串str的最左面字符的ASCII代码值.如果str是空字符串,返回0.如果str是NULL,返回NU ...

  5. MySQL函数不能创建的解决方法

    MySQL函数不能创建,是一个很麻烦的问题,下面就为您提供了一个解决此问题的方法,如果您也遇到过类似的问题,不妨一看. http://database.51cto.com/art/201010/229 ...

  6. Mysql函数:Last_insert_id()语法讲解

    Mysql函数可以实现许多我们需要的功能,下面介绍的Mysql函数Last_insert_id()就是其中之一,希望对您学习Mysql函数能有所帮助. 自动返回最后一个INSERT或 UPDATE 查 ...

  7. linux下mysql函数的详细案列

    MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *pas ...

  8. MySQL函数讲解(MySQL函数大全)

    讲mysql函数之前先给大家展示一下利用mysql函数的一个例子: SELECT i.item_id, i.item_name, i.cid, i.last_update_time, u.url, u ...

  9. mysql函数全解析

    本文摘自:http://www.cnblogs.com/cocos/archive/2011/05/06/2039469.html mysql函数大全 对于针对字符串位置的操作,第一个位置被标记为1. ...

  10. MySQL函数笔记

    MySQL函数笔记 日期函数 SELECT t1.xcjyrq, t1.* FROM view_sbxx t1 WHERE t1.syzt ; SELECT t1.xcjyrq, t1.* FROM ...

随机推荐

  1. 2021-8-5 Microsoft文档学习笔记(C#)

    以下列表概述了类可以包含的成员类型. 常量:与类相关联的常量值 字段:与类关联的变量 方法:类可执行的操作 属性:与读取和写入类的已命名属性相关联的操作 索引器:与将类实例编入索引(像处理数组一样)相 ...

  2. 自动刷新服务:nodemon

    安装命令: npm install -g nodemon 运行命令: nodemon server.js 运行结果:

  3. pandas读取mysql并导出为excel

    前言 业务需要从数据库导出数据为excel,并设置成自动化.这里用pandas写的数据导入导出,还算方便.配合crontab + shell脚本使用,每天晚上自动生成excel,然后cp到指定目录.s ...

  4. Mybatis框架的搭建和基本使用

    本文总结最原始Mybatis框架的搭建和最基本使用(不涉及Spring框架体系). 1 依赖 首先,我们要引入Mybatis依赖: <dependency> <groupId> ...

  5. Linux cpu 亲缘性 绑核

    前言 https://www.cnblogs.com/studywithallofyou/p/17435497.html https://www.cnblogs.com/studywithallofy ...

  6. Vue的数据更新,页面不更新的解决办法

    可能原因 更新的数据跟源数据不是同一个,即不是同一个引用 解决办法 最稳妥的办法,可通过拿到源数据取索引的方式进行数据的更新,如: 有一个源数据叫:originData 那么如果在更新时,通过this ...

  7. [ABC129E] Sum Equals Xor

    2023-01-15 题目 题目传送门 翻译 翻译 难度&重要性(1~10):4 题目来源 AtCoder 题目算法 dp/模拟 解题思路 我们都知道,异或是一种不进位的加法,而要想 $ a ...

  8. 从原理聊 JVM(五):JVM 的编译过程和优化手段

    一.前端编译 前端编译就是将Java源码文件编译成Class文件的过程,编译过程分为4步: 1 准备 初始化插入式注解处理器(Annotation Processing Tool). 2 解析与填充符 ...

  9. JAVA-Springboot实践项目-用户注册

    Smiling & Weeping ----我本没喜欢的人, 见你的次数多了, 也就有了. 1.创建数据表 1.1.选中数据表: use store 1.2.创建t_user表: 2创建用户实 ...

  10. Longest Divisors Interval

    Smiling & Weeping ----总有一个人, 一直住在心底, 却消失在生活里. Given a positive integer n, find the maximum size ...