MySQL函数解读
一、字符串函数
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.去除空格
LTRIM、RTRIM、TRIM去左空格,去有空格,去两边空格
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函数解读的更多相关文章
- Mysql Explain 解读(基于MySQL 5.6.36)
Mysql Explain 解读(基于MySQL 5.6.36) 1.语法 explain < table_name > #例子 explain select * from t3 wher ...
- Mysql - 函数
Mysql提供的函数是在是太多了, 很多我都见过, 别说用了. 园子里面, 有人弄了一个比较全的. MYSQL函数 我这里会将他写的完全拷贝下来, 中间会插入一些自己项目中使用过的心得 一.数学函数 ...
- mysql连接查询,封装mysql函数
连接查询 交叉连接语法: select * | 字段列表 from 表1 cross join 表2 内连接: select *|字段列表 from 左表 inner join 右表 on 左表. ...
- MySQL 函数大全
mysql函数大全 对于针对字符串位置的操作,第一个位置被标记为1. ASCII(str) 返回字符串str的最左面字符的ASCII代码值.如果str是空字符串,返回0.如果str是NULL,返回NU ...
- MySQL函数不能创建的解决方法
MySQL函数不能创建,是一个很麻烦的问题,下面就为您提供了一个解决此问题的方法,如果您也遇到过类似的问题,不妨一看. http://database.51cto.com/art/201010/229 ...
- Mysql函数:Last_insert_id()语法讲解
Mysql函数可以实现许多我们需要的功能,下面介绍的Mysql函数Last_insert_id()就是其中之一,希望对您学习Mysql函数能有所帮助. 自动返回最后一个INSERT或 UPDATE 查 ...
- linux下mysql函数的详细案列
MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *pas ...
- MySQL函数讲解(MySQL函数大全)
讲mysql函数之前先给大家展示一下利用mysql函数的一个例子: SELECT i.item_id, i.item_name, i.cid, i.last_update_time, u.url, u ...
- mysql函数全解析
本文摘自:http://www.cnblogs.com/cocos/archive/2011/05/06/2039469.html mysql函数大全 对于针对字符串位置的操作,第一个位置被标记为1. ...
- MySQL函数笔记
MySQL函数笔记 日期函数 SELECT t1.xcjyrq, t1.* FROM view_sbxx t1 WHERE t1.syzt ; SELECT t1.xcjyrq, t1.* FROM ...
随机推荐
- mysql系列03---事务
一.事务简介 事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销 操作请求,即这些操作要么同时成功,要么同时失败. 二.事物的四大特性 一个事务具有A ...
- ROC 曲线与 PR 曲线
ROC 曲线与 PR 曲线 ROC 曲线与 PR 曲线 ROC 曲线和 PR 曲线是评估机器学习算法性能的两条重要曲线,两者概念比较容易混淆,但是两者的使用场景是不同的.本文主要讲述两种曲线的含义以及 ...
- 让 GPT-4 来修复 Golang “数据竞争”问题 - 每天5分钟玩转 GPT 编程系列(6)
目录 1. Golang 中的"数据竞争" 2. GoPool 中的数据竞争问题 3. 让 GPT-4 来修复数据竞争问题 3.1 和 GPT-4 的第一轮沟通 3.2 和 GPT ...
- HDU 3829 Cat VS Dog 猫和狗(二分图)结题报告
听学长说这道题很ex,但是思路想到的话还是挺简单的. 可能是受上一道题(放置机器人)的启发,也是找互相冲突的点连线. 但是并不是完全一样(废话)放置机器人那道题是找到冲突点连线后直接求最大匹配即可. ...
- 【技术积累】Linux中的命令行【理论篇】【九】
blkid命令 命令介绍 blkid命令是一个用于查看块设备属性的Linux命令.它可以识别和显示块设备的文件系统类型.UUID.LABEL.PARTUUID等信息. 命令说明 在Linux下可以使用 ...
- Python 潮流周刊#16:优雅重要么?如何写出 Pythonic 的代码?
你好,我是猫哥.这里每周分享优质的 Python.AI 及通用技术内容,大部分为英文.标题取自其中两则分享,不代表全部内容都是该主题,特此声明. 本周刊由 Python猫 出品,精心筛选国内外的 25 ...
- [ABC212E] Safety Journey
2023-01-08 题目 题目传送门 翻译 翻译 难度&重要性(1~10):2 题目来源 AtCoder 题目算法 dp 解题思路 首先就想到暴力 dp,用三个循环枚举:\(1.\) 时间, ...
- WLAN-AC+AP,动态负载均衡用户量,避免某一个AP负载过重
组网图形 动态负载均衡简介 负载均衡功能主要功能就是平衡WLAN网络中AP的负载,充分地保证每个STA的带宽.当有一个新的STA加入网络时,动态负载均衡动态将AC将所有上报该STA的AP动态组成一个组 ...
- ArcMap中矢量数据修改标注Label的方法
本文介绍在ArcMap软件中,修改图层标签(Label)所显示字段与具体显示内容的方法. 在之前的文章中,我们看到了ArcMap中修改图层标签的重要性:可是,如何自定义图层的标签内容呢? ...
- 地表最帅缓存Caffeine
简介 缓存是程序员们绕不开的话题,像是常用的本地缓存Guava,分布式缓存Redis等,是提供高性能服务的基础.今天敬姐带大家一起认识一个更高效的本地缓存--Caffeine. Caffeine Ca ...