MySQL 常用函数

目录

格式

字符函数(处理字符或字符类型)

LENGTH(str)  

CHAR_LENGTH(str) 

UPPER(str)和UCASE(str)  

LOWER(str)和LCASE(str) 

 SUBSTR(s, start,end) 

INSTR(str,str1)

TRIM(s)

日期函数

常用函数

ADDTIME(date,num)

ADDDATE(date,num)

DATEDIFF(date1,date2)

数学函数

常用函数

聚合函数

常用函数

举例:

if函数

if():

ifnull(): 

case函数

格式:

 举例:

格式

SELECT  函数(表头名)  FROM  库名.表名;

SELECT  函数(表头名)  FROM  库名.表名 WHERE 条件;

字符函数(处理字符或字符类型)

LENGTH(str)  

返字符串长度,以字节为单位(一个汉字3个字节)

mysql> select name from tarena.user where name = "root" ;
+------+
| name |
+------+
| root |
+------+
1 row in set (0.00 sec)
mysql> select name , length(name) as 字节个数from tarena.user where name = "root" ;
+------+--------------+
| name | 字节个数      |
+------+--------------+
| root |            4 |
+------+--------------+
1 row in set (0.00 sec)

CHAR_LENGTH(str) 

返回字符串长度,以字符为单位 

mysql> select name , char_length(name) from tarena.employees where employee_id = 3 ;
+-----------+-------------------+
| name      | char_length(name) |
+-----------+-------------------+
| 李玉英     |                 3 |
+-----------+-------------------+
1 row in set (0.00 sec)

UPPER(str)和UCASE(str)  

将字符串中的字母全部转换成大写 

mysql> select name from  tarena.user where uid <= 3 ;
+--------+
| name   |
+--------+
| root   |
| bin    |
| daemon |
| adm    |
+--------+
4 rows in set (0.00 sec)
mysql> select upper(name) from  tarena.user where uid <= 3 ;
+-------------+
| upper(name) |
+-------------+
| ROOT        |
| BIN         |
| DAEMON      |
| ADM         |
+-------------+
4 rows in set (0.00 sec)

LOWER(str)和LCASE(str) 

将str中的字母全部转换成小写 

mysql> select lower("ABCD") ;
+---------------+
| lower("ABCD") |
+---------------+
| abcd          |
+---------------+
1 row in set (0.00 sec)

 SUBSTR(s, start,end) 

从s的start位置开始取出到end长度的子串

mysql> select name from  tarena.employees where employee_id <= 3 ;
+-----------+
| name      |
+-----------+
| 梁伟      |
| 郭岩      |
| 李玉英    |
+-----------+
3 rows in set (0.00 sec)
//不是输出员工的姓 只输出名字
mysql> select substr(name,2,3) from  tarena.employees where employee_id <= 3 ;
+------------------+
| substr(name,2,3) |
+------------------+
| 伟               |
| 岩               |
| 玉英             |
+------------------+
3 rows in set (0.00 sec)

INSTR(str,str1)

返回str1参数,在str参数内的位置 

mysql> select name from  tarena.user where uid <= 3 ;
+--------+
| name   |
+--------+
| root   |
| bin    |
| daemon |
| adm    |
+--------+
4 rows in set (0.00 sec)
mysql> select instr(name,"a") from  tarena.user where uid <= 3 ;
+-----------------+
| instr(name,"a") |
+-----------------+
|               0 |
|               0 |
|               2 |
|               1 |
+-----------------+
4 rows in set (0.00 sec)

TRIM(s)

返回字符串s删除了两边空格之后的字符串 

mysql> select trim("  ABC  ");
+-----------------+
| trim("  ABC  ") |
+-----------------+
| ABC             |
+-----------------+
1 row in set (0.00 sec)

日期函数

常用函数

函数 说明 函数 说明
curtime()

获取时间

hour()

获取小时
curdate() 获取日期 minute() 获取分钟
now( ) 获取日期和时间 second() 获取秒
year() 获取年 quarter() 获取一年中第几季度
month() 获取月 monthname() 获取月份名称
day()/week() 获取日/一年中的第几周 dayname() 获取日期对应的星期名
date()/weekday() 获取日期/一周中的周几 dayofyear() 获取一年中第几天
time() 获取时间 dayofmonth() 获取一月中第几天

表orders:

ADDTIME(date,num)

添加时间

mysql> select order_num,addtime(order_date,10) from orders;
+-----------+------------------------+
| order_num | addtime(order_date,10) |
+-----------+------------------------+
|     20005 | 2023-09-01 00:00:10    |
|     20006 | 2023-09-12 00:00:10    |
|     20007 | 2023-09-30 00:00:10    |
|     20008 | 2023-10-03 00:00:10    |
|     20009 | 2023-10-08 00:00:10    |
+-----------+------------------------+
5 rows in set (0.02 sec)

ADDDATE(date,num)

 添加日期

mysql> select order_num,adddate(order_date,10) from orders;
+-----------+------------------------+
| order_num | adddate(order_date,10) |
+-----------+------------------------+
|     20005 | 2023-09-11 00:00:00    |
|     20006 | 2023-09-22 00:00:00    |
|     20007 | 2023-10-10 00:00:00    |
|     20008 | 2023-10-13 00:00:00    |
|     20009 | 2023-10-18 00:00:00    |
+-----------+------------------------+
5 rows in set (0.00 sec)

DATEDIFF(date1,date2)

时间差:date1-date2

mysql> select order_num,datediff(order_date,curdate()) as day_difference from orders;
+-----------+----------------+
| order_num | day_difference |
+-----------+----------------+
|     20005 |           -220 |
|     20006 |           -209 |
|     20007 |           -191 |
|     20008 |           -188 |
|     20009 |           -183 |
+-----------+----------------+
5 rows in set (0.01 sec)

数学函数

常用函数

函数 说明 函数 说明
abs() 绝对值 mod(x,y) 求余x%y
cos() 余弦,参数为弧度 pi() 圆周率
floor(x) 不大于x的最大整数 ceiling(x) 不小于x的最小整数
sqrt() 平方根 ceil(x) 不小于x的最小整数
exp() e的次方 rand(x,n) 四舍五入保留n位小数点

聚合函数

常用函数

函数 说明
sum(表头名) 求和
avg(表头名) 计算平均值
min(表头名) 获取最小值
max(表头名) 获取最大值
count(表头名) 统计表头值个数(包括null)

举例:

mysql> select * from orderitems;
+-----------+------------+---------+----------+------------+
| order_num | order_item | prod_id | quantity | item_price |
+-----------+------------+---------+----------+------------+
|     20005 |          1 | ANV01   |       10 |       5.99 |
|     20005 |          2 | ANV02   |        3 |       9.99 |
|     20005 |          3 | TNT2    |        5 |      10.00 |
|     20005 |          4 | FB      |        1 |      10.00 |
|     20006 |          1 | JP2000  |        1 |      55.00 |
|     20007 |          1 | TNT2    |      100 |      10.00 |
|     20008 |          1 | FC      |       50 |       2.50 |
|     20009 |          1 | FB      |        1 |      10.00 |
|     20009 |          2 | OL1     |        1 |       8.99 |
|     20009 |          3 | SLING   |        1 |       4.49 |
|     20009 |          4 | ANV03   |        1 |      14.99 |
+-----------+------------+---------+----------+------------+
11 rows in set (0.00 sec)

确定售出的商品总数(使用Orderltems中的数量列)

mysql> select sum(quantity)  from orderitems;
+---------------+
| sum(quantity) |
+---------------+
|           174 |
+---------------+
1 row in set (0.00 sec)

if函数

if(条件,v1,v2) 如果条件是TRUE则返回v1,否则返回v2

ifnull(v1,v2) 如果v1不为NULL,则返回v1,否则返回v2

if():

mysql> select  if(1 = 2 , "a","b");
+---------------------+
| if(1 = 2 , "a","b") |
+---------------------+
| b                   |
+---------------------+
1 row in set (0.00 sec)

ifnull(): 

mysql> select  ifnull("abc","xxx");
+---------------------+
| ifnull("abc","xxx") |
+---------------------+
| abc                 |
+---------------------+
1 row in set (0.00 sec)

case函数

格式:

CASE 表头名              
WHEN 值1 THEN 输出结果 
WHEN 值2 THEN 输出结果  
WHEN 值3 THEN 输出结果 
ELSE 输出结果  
END

CASE              
WHEN  判断条件1 THEN 输出结果 
WHEN  判断条件2 THEN 输出结果  
WHEN  判断条件3 THEN 输出结果 
ELSE  输出结果  
END

如果表头名等于某个值,则返回对应位置then后面的值并结束判断,

如果与所有值都不相等,则返回else后面的结果并结束判断

 举例:

mysql> select  * from tarena.departments;
+---------+-----------+
| dept_id | dept_name |
+---------+-----------+
|       1 | 人事部    |
|       2 | 财务部    |
|       3 | 运维部    |
|       4 | 开发部    |
|       5 | 测试部    |
|       6 | 市场部    |
|       7 | 销售部    |
|       8 | 法务部    |
+---------+-----------+
8 rows in set (0.03 sec)

输出部门类型

mysql> select dept_id,dept_name,
    -> case
    -> when dept_name="运维部"  then "技术部"
    -> when dept_name="开发部"  then "技术部"
    -> when dept_name="测试部"  then "技术部"
    -> else "非技术部"
    -> end as 部门类型  from  tarena.departments;
+---------+-----------+--------------+
| dept_id | dept_name | 部门类型     |
+---------+-----------+--------------+
|       1 | 人事部    | 非技术部     |
|       2 | 财务部    | 非技术部     |
|       3 | 运维部    | 技术部       |
|       4 | 开发部    | 技术部       |
|       5 | 测试部    | 技术部       |
|       6 | 市场部    | 非技术部     |
|       7 | 销售部    | 非技术部     |
|       8 | 法务部    | 非技术部     |
+---------+-----------+--------------+
8 rows in set (0.00 sec)

 或者

mysql> select dept_id, dept_name,
    -> case dept_name
    -> when '运维部' then '技术部门'
    -> when '开发部' then '技术部门'
    -> when '测试部' then '技术部门'
    -> else '非技术部门'
    -> end as  部门类型   from  tarena.departments;
+---------+-----------+-----------------+
| dept_id | dept_name | 部门类型        |
+---------+-----------+-----------------+
|       1 | 人事部    | 非技术部门      |
|       2 | 财务部    | 非技术部门      |
|       3 | 运维部    | 技术部门        |
|       4 | 开发部    | 技术部门        |
|       5 | 测试部    | 技术部门        |
|       6 | 市场部    | 非技术部门      |
|       7 | 销售部    | 非技术部门      |
|       8 | 法务部    | 非技术部门      |
+---------+-----------+-----------------+
8 rows in set (0.00 sec)

相关推荐

  1. mysql函数

    2024-04-09 10:56:02       65 阅读
  2. MySQL函数

    2024-04-09 10:56:02       39 阅读
  3. MySQL函数

    2024-04-09 10:56:02       34 阅读
  4. MySQL 函数介绍

    2024-04-09 10:56:02       58 阅读
  5. MySQL函数

    2024-04-09 10:56:02       37 阅读
  6. MySQL函数介绍

    2024-04-09 10:56:02       36 阅读
  7. mysql函数

    2024-04-09 10:56:02       23 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-09 10:56:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-09 10:56:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-09 10:56:02       82 阅读
  4. Python语言-面向对象

    2024-04-09 10:56:02       91 阅读

热门阅读

  1. MySQL-8. mysql索引

    2024-04-09 10:56:02       35 阅读
  2. Factory模式是什么呀

    2024-04-09 10:56:02       34 阅读
  3. qt day2

    qt day2

    2024-04-09 10:56:02      37 阅读
  4. Linux文件和目录管理及文本搜索命令find grep

    2024-04-09 10:56:02       37 阅读
  5. 面试题:Jvm 的 synchronized 和 JDK 的 Lock

    2024-04-09 10:56:02       31 阅读
  6. WPF —— 平移变换动画实例

    2024-04-09 10:56:02       39 阅读
  7. 【WPF应用40】WPF 基本控件 - Border:详解与实例

    2024-04-09 10:56:02       41 阅读
  8. 代码示例:OpenSSL AES CBC 加密

    2024-04-09 10:56:02       31 阅读
  9. 【WPF应用41】WPF中的Expander控件详解

    2024-04-09 10:56:02       36 阅读