统计相关函数

COUNT和SUM函数使用小技巧

参考自: MySQL - Conditional COUNT with GROUP BY

在一个 SQL 中统计多个指标的个数:

SELECT COUNT(DISTINCT col1)
, COUNT(DISTINCT CASE WHEN col2 > 10 THEN col2 ELSE 0 END) - 1
, SUM(CASE WHEN col3 > 0 THEN 1 ELSE 0 END)
FROM tableName;

Date and Time Functions

DATE_ADD()/DATE_SUB()

MySQL 5.7 DATE_ADD()

DATE_ADD(dateTime, INTERVAL 100 SECOND)


DATE_FORMAT()

MySQL 5.7 DATE_FORMAT()

DATE_FORMAT(dateTime, "%Y-%m-%d %H:%i:%S")


TIMESTAMPDIFF()/TIMESTAMPADD()

TIMESTAMPDIFF(unit, expr1, expr2): expr2 - expr1 得到多少个 unit .

TIMESTAMPADD(unit,interval,datetime_expr)


String Functions

LENGTH() VS CHAR_LENGTH()

LENGTH(): 字符串占用存储空间的字节数;

CHAR_LENGTH(): 字符串在这种字符集下的字符个数;

在 UTF-8 编码下, 一个中文汉字一般占用三个字节:

mysql> SELECT LENGTH(_utf8mb4 '中文'), CHAR_LENGTH(_utf8mb4 '中文');
+---------------------------+--------------------------------+
| LENGTH(_utf8mb4 '中文') | CHAR_LENGTH(_utf8mb4 '中文') |
+---------------------------+--------------------------------+
| 6 | 2 |
+---------------------------+--------------------------------+
1 row in set (0.00 sec)

SUBSTRING()/LOCATE()

SUBSTRING(str,pos), SUBSTRING(str FROM pos), SUBSTRING(str,pos,len), SUBSTRING(str FROM pos FOR len)`

LOCATE(substr,str), LOCATE(substr,str,pos)

mysql> SELECT SUBSTRING('大部门-中部门-小部门',
LOCATE('大部门-中部门', '大部门-中部门-小部门') + CHAR_LENGTH('大部门-中部门') + 1)
AS sub_dept_name;
+---------------+
| sub_dept_name |
+---------------+
| 小部门 |
+---------------+
1 row in set (0.01 sec)

TRIM()

删除字符串中的 前缀/后缀/任意位置空白/特定 字符串(MySQL 5.7 TRIM):

mysql> SELECT TRIM('  bar   ');
+------------------+
| TRIM(' bar ') |
+------------------+
| bar |
+------------------+
1 row in set (0.01 sec) mysql> SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx');
+------------------------------------+
| TRIM(LEADING 'x' FROM 'xxxbarxxx') |
+------------------------------------+
| barxxx |
+------------------------------------+
1 row in set (0.01 sec) mysql> SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx');
+---------------------------------+
| TRIM(BOTH 'x' FROM 'xxxbarxxx') |
+---------------------------------+
| bar |
+---------------------------------+
1 row in set (0.00 sec) mysql> SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz');
+-------------------------------------+
| TRIM(TRAILING 'xyz' FROM 'barxxyz') |
+-------------------------------------+
| barx |
+-------------------------------------+
1 row in set (0.01 sec)

MySQL 函数笔记的更多相关文章

  1. MySQL函数笔记

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

  2. MYSQL学习笔记三:日期和时间函数

    MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...

  3. MySQL学习笔记_7_MySQL常用内置函数

    MySQL常用内置函数 说明: 1)可以用在SELECT/UPDATE/DELETE中,及where,orderby,having中 2)在函数里将字段名作为参数,变量的值就是字段所对应的每一行的值. ...

  4. MYSQL进阶学习笔记五:MySQL函数的创建!(视频序号:进阶_13)

    知识点六:MySQL函数的创建(13) 内置函数: 自定义函数: 首先查看是否已经开启了创建函数的功能: SHOW VARIABLES LIKE ‘%fun%’; 如果变量的值是OFF,那么需要开启 ...

  5. 一千行MySQL学习笔记

    以下为本人当年初学MySQL时做的笔记,也从那时起没再更新过,但还是囊括了基本的知识点,有时还翻出来查查.是不是干货,就看亲们了~ 如果哪天笔记有更新了,我还是会更新该文章滴,其实笔记已经放到了Git ...

  6. MySQL学习笔记一

    MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...

  7. MYSQL基础笔记(六)- 数据类型一

    数据类型(列类型) 所谓数据烈性,就是对数据进行统一的分类.从系统角度出发时为了能够使用统一的方式进行管理,更好的利用有限的空间. SQL中讲数据类型分成三大类:1.数值类型,2.字符串类型和时间日期 ...

  8. MYSQL基础笔记(五)- 练习作业:站点统计练习

    作业:站点统计 1.将用户的访问信息记录到文件中,独占一行,记录IP地址 <?php //站点统计 header('Content-type:text/html;charset=utf-8'); ...

  9. MySQL入门笔记(二)

    MySQL的数据类型.数据库操作.针对单表的操作以及简单的记录操作可参考:MySQL入门笔记(一) 五.子查询   子查询可简单地理解为查询中的查询,即子查询外部必然还有一层查询,并且这里的查询并非仅 ...

随机推荐

  1. POJ 2836:Rectangular Covering(状态压缩DP)

    题目大意:在一个平面内有若干个点,要求用一些矩形覆盖它们,一个矩形至少覆盖两个点,可以相互重叠,求矩形最小总面积. 分析: 数据很小,很容易想到状压DP,我们把点是否被覆盖用0,1表示然后放在一起得到 ...

  2. 【bzoj3884】上帝与集合的正确用法 扩展欧拉定理

    题目描述 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做“元”. 第二天, 上帝创造了一个新的元素,称作“α”.“α”被定义为“元”构成的集合.容 ...

  3. BZOJ2395 [Balkan 2011]Timeismoney 【最小乘积生成树】

    题目链接 BZOJ2395 题意:无向图中每条边有两种权值,定义一个生成树的权值为两种权值各自的和的积 求权值最小的生成树 题解 如果我们将一个生成树的权值看做坐标,那么每一个生成树就对应一个二维平面 ...

  4. log4j.xml配置文件详解

    一 log4j.xml 配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:c ...

  5. 数组去重js方式

    var selectmap = new Array(); /(\x0f[^\x0f]+)\x0f[\s\S]*\1/.test("\x0f"+selectmap.join(&quo ...

  6. 【bzoj2946】[Poi2000]公共串 后缀自动机

    [Poi2000]公共串 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 1386  Solved: 620[Submit][Status][Discus ...

  7. C 语言实现 php base64_encode

    这是在网上找到的一段代码,因为需求不同,稍微做了下修改,有需要的朋友可以直接复制使用. unsigned char *base64_encode(const unsigned char *str, s ...

  8. 品酒大会(uoj 131)

    一年一度的“幻影阁夏日品酒大会”隆重开幕了.大会包含品尝和趣味挑战两个环节,分别向优胜者颁发“首席品酒家”和“首席猎手”两个奖项,吸引了众多品酒师参加. 在大会的晚餐上,调酒师 Rainbow 调制了 ...

  9. poj 2441 Arrange the Bulls

    Arrange the Bulls Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 5427   Accepted: 2069 ...

  10. BZOJ 4766: 文艺计算姬

    4766: 文艺计算姬 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 456  Solved: 239[Submit][Status][Discuss] ...