IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MYSQL常见函数小结 -> 正文阅读

[大数据]MYSQL常见函数小结

目录

一、数值函数

1、ROUND

2、abs()

3、 ceil(x)

4、floor(x)

5、RAND()

?6、truncate(m,n)

?二、字符串函数

?1、concat

2、insert

3、upper

4、left&&right

5、lpad&&rpad

6、ltrim&&rtrim

?7、replace

?8、substring (str,m,n)

三、日期函数

1、curdate()

?2、curtime()

3、now()

4、year()

5、month()

6、week()

7、hour()

8、minute()

9、date_add

10、datediff

11、date_format()

?四、流程函数

?1、IF?

2、IFNULL

3、CASE WHEN THEN ELSE END

?编辑

五、窗口函数?

1、基本语法

①partition by子句

②order by子句

?2、排序

? ? ? ? ①rank

? ? ? ? ②row_number

? ? ? ? ③dense_rank


一、数值函数

1、ROUND

  • ?ROUND(x,y):求参数 x 的四舍五入的值,并保留 y 位小数
  • SELECT ROUND(2.345, 2);

    2、abs()

    • 返回绝对值函数,例:

    • mysql> SELECT ABS(2);
              -> 2
      mysql> SELECT ABS(-32);
              -> 32

3、 ceil(x)

????????返回不小于x的最小整数

4、floor(x)

? ? ? ? 返回不大于x的最大整数

mysql> select ceil(10.5),floor(10.1);
+------------+-------------+
| ceil(10.5) | floor(10.1) |
+------------+-------------+
|         11 |          10 |
+------------+-------------+
1 row in set (0.00 sec)

5、RAND()

????????获取随机数,函数产生的数在0-1之间?

mysql> select rand(); # 0到1之间随机的小数 
+---------------------+
| rand()              |
+---------------------+
| 0.01271833014927649 |
+---------------------+
1 row in set (0.00 sec)

# 获取0~100 之间的随机整数 
select ceil(rand()*100);

?6、truncate(m,n)

???????? 返回数字m 被截断为n的为小数的值

mysql> SELECT TRUNCATE(1.223,1);
        -> 1.2
mysql> SELECT TRUNCATE(1.999,1);
        -> 1.9
mysql> SELECT TRUNCATE(1.999,0);
        -> 1
mysql> SELECT TRUNCATE(-1.999,1);
        -> -1.9
mysql> SELECT TRUNCATE(122,-2);
       -> 100
mysql> SELECT TRUNCATE(10.28*100,0);
       -> 1028

?二、字符串函数

?1、concat

????????字符串拼接,将 s1, s2, ..... , sn 拼接成一个字符串

 select concat('abc','def') as title;
 select concat(name,'birth is',birthday) from employee;
+----------------------------------+
| concat(name,'birth is',birthday) |
+----------------------------------+
| 张三birth is1975-01-01           |
| 李四birth is1985-01-01           |
| 王五birth is1978-11-11           |
| 赵六birth is1979-01-01           |
+----------------------------------+

2、insert

????????替换字符串的函数

????????nsert(str,m,n,new_str) 将字符串str 从下表m位置开始 替换n个 替换成new_str

????????mysql 下表从1 开始

mysql> select insert('linux is so good',1,5,'python');
+-----------------------------------------+
| insert('linux is so good',1,5,'python') |
+-----------------------------------------+
| python is so good                       |
+-----------------------------------------+

3、upper

????????LOWER(str):将字符串 str 全部转为小写

????????UPPER(str):将字符串 str 全部转为大写


mysql> select lower('XIAO'),upper('hello');
+---------------+----------------+
| lower('XIAO') | upper('hello') |
+---------------+----------------+
| xiao          | HELLO          |
+---------------+----------------+
1 row in set (0.00 sec)


select * from 表名 where upper() = ; # 也可以这么用

4、left&&right

????????获取指定长度的字符串left(s,n),right();

????????若n>s的长度则返回s,若n为负数则返回空;

mysql> select left('愿你与我立黄昏',3),right('愿你与我粥可温',3),left()'python is yyds',null);
+---------------------------------+----------------------------------+-----------------------------+
| left('愿你与我立黄昏',3)        | right('愿你与我粥可温',3)        | left('python is yyds',null) |
+---------------------------------+----------------------------------+-----------------------------+
| 愿你与                          | 粥可温                           | NULL                        |
+---------------------------------+----------------------------------+-----------------------------+
1 row in set (0.00 sec)

5、lpad&&rpad

????????填充字符串函数lpad(s1,len,s2),rpad(s1,len,s2);

????????如果s1的长度大于len 则返回len长度的s1;l和r的区别为在左和在右;

6、ltrim&&rtrim

????????删除空格函数ltrim(s),rtrim(s),trim(s)即删除字符串左边、右边、两边的空格;

?

?7、replace

????????替换函数replace(s,s1,s2)?

mysql> select replace('linux is so good','linux','python');
+----------------------------------------------+
| replace('linux is so good','linux','python') |
+----------------------------------------------+
| python is so good                            |
+----------------------------------------------+
1 row in set (0.00 sec)

?8、substring (str,m,n)

????????从下标m开始 截取n个 长度的字符串类似于python 字符串的切片

????????如果有头无尾 代表 代表截取到最后

mysql> SELECT SUBSTRING('Quadratically',5);
        -> 'ratically'
mysql> SELECT SUBSTRING('foobarbar' FROM 4);
        -> 'barbar'
mysql> SELECT SUBSTRING('Quadratically',5,6);
        -> 'ratica'
mysql> SELECT SUBSTRING('Sakila', -3);
        -> 'ila'
mysql> SELECT SUBSTRING('Sakila', -5, 3);
        -> 'aki'
mysql> SELECT SUBSTRING('Sakila' FROM -4 FOR 2);
        -> 'ki'

三、日期函数

1、curdate()

????????当前的日期

?2、curtime()

????????当前的时间

3、now()

? ? ? ? 当前的日期加时间

4、year()

? ? ? ? 获取年份

5、month()

? ? ? ? 获取月份

6、week()

? ? ? ? 获取第几周

7、hour()

? ? ? ? 获取小时

8、minute()

? ? ? ? 获取分钟

mysql> select year(@test);
+-------------+
| year(@test) |
+-------------+
|        2022 |
+-------------+
1 row in set (0.00 sec)

mysql> select month(@test);
+--------------+
| month(@test) |
+--------------+
|            5 |
+--------------+
1 row in set (0.00 sec)

mysql> select week(now());
+-------------+
| week(now()) |
+-------------+
|          21 |
+-------------+
1 row in set (0.00 sec)

mysql> select hour(now());
+-------------+
| hour(now()) |
+-------------+
|          15 |
+-------------+
1 row in set (0.00 sec)

mysql> select minute(now());
+---------------+
| minute(now()) |
+---------------+
|            23 |
+---------------+
1 row in set (0.00 sec)

9、date_add

????????DATE_ADD(date, INTERVAL expr type):返回一个日期/时间值加上一个时间间隔expr后的时间值?

mysql> set @test = now();
Query OK, 0 rows affected (0.00 sec)

mysql> select date_add(@test,interval 3 day);
+--------------------------------+
| date_add(@test,interval 3 day) |
+--------------------------------+
| 2022-05-30 15:11:52            |
+--------------------------------+
1 row in set (0.00 sec)

mysql> select date_add(@test,interval -5 day);
+---------------------------------+
| date_add(@test,interval -5 day) |
+---------------------------------+
| 2022-05-22 15:11:52             |
+---------------------------------+
1 row in set (0.00 sec)

select date_add(@test,interval -5 hour);
select date_add(@test,interval -5 minute);
select date_add(@test,interval -5 second);
select date_add(@test,interval -5 microsecond);
select date_add(@test,interval -5 week);
select date_add(@test,interval -5 month);
select date_add(@test,interval -5 quarter);
select date_add(@test,interval -5 year);
mysql> select adddate(curdate(),7);
+----------------------+
| adddate(curdate(),7) |
+----------------------+
| 2022-06-03           |
+----------------------+
1 row in set (0.00 sec)

mysql> select adddate(now(),7);
+---------------------+
| adddate(now(),7)    |
+---------------------+
| 2022-06-03 15:15:18 |
+---------------------+
1 row in set (0.00 sec)

mysql> select adddate(now(),-5);
+---------------------+
| adddate(now(),-5)   |
+---------------------+
| 2022-05-22 15:15:47 |
+---------------------+
1 row in set (0.00 sec)

10、datediff

????????DATEDIFF(date1, date2):返回起始时间 date1 和结束时间 date2 之间的天数

SELECT DATEDIFF("2022-5-7","2022-7-9");

11、date_format()

? ? ? ? 日期格式化,等同python的 strftime()

mysql> select date_format(now(),'%Y-%m-%d %h:%m:%s');
+----------------------------------------+
| date_format(now(),'%Y-%m-%d %h:%m:%s') |
+----------------------------------------+
| 2022-05-27 03:05:07                    |
+----------------------------------------+

?四、流程函数

?1、IF?

????????IF(value, t, f):如果表达式 value?成立,返回结果 t;否则,返回结果 f。

SELECT IF(TRUE,'OK','ERROR'), IF(FALSE,'OK','ERROR');

2、IFNULL

????????IFNULL(value1, value2):如果 value1?的值不为 NULL,则返回 value1,否则返回 value2。?

SELECT IFNULL('OK','ERROR'), IFNULL(NULL,'ERROR');

?

3、CASE WHEN THEN ELSE END

CASE expression
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
   ...
    WHEN conditionN THEN resultN
    ELSE result
END
  • CASE 表示函数开始,END 表示函数结束。如果 condition1 成立,则返回 result1, 如果 condition2 成立,则返回 result2,当全部不成立则返回 result,而当有一个成立之后,后面的就不执行了
  • 下面以一个例子说明这个函数:
    ? ? ? ? 查询 emp 表的员工姓名和员工地址,员工地址在北京和上海的显示为一线城市,除此之外的都显示为二线城市:?
  • SELECT
    	name,
    	(CASE workaddress WHEN '北京' THEN '一线城市' WHEN '上海' THEN '一线城市' ELSE '二线城市' END) as '工作地址'
    FROM emp;

五、窗口函数?

1、基本语法

<窗口函数> OVER ([PARTITION BY <列清单>]
ORDER BY <排序用列清单>)

①partition by子句

????????窗口按照哪些字段进行分组,窗口函数在不同的分组上分别执行

②order by子句

????????按照哪些字段进行排序,窗口函数将按照排序后的记录顺序进行编号

?2、排序

? ? ? ? ①rank

? ? ? ? ②row_number

? ? ? ? ③dense_rank

ROW_NUMBER():顺序排序——1、2、3

RANK():并列排序,跳过重复序号——1、1、3

DENSE_RANK():并列排序,不跳过重复序号——1、1、2

select id,classname,score,RANK() over (ORDER BY score desc ) as 排名1, DENSE_RANK() over (ORDER BY score desc ) as 排名2,ROW_NUMBER() over (ORDER BY score desc ) as 排名3 from classroom;
			  rank  dense row
0003	2	90	1	1	1
0002	1	87	2	2	2
0001	1	85	3	3	3
0005	2	85	3	3	4
0007	3	85	3	3	5
0004	1	74	6	4	6
0008	1	66	7	5	7
0006	3	59	8	6	8

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-23 00:55:58  更:2022-06-23 00:57:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 0:01:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码