MySQL——高级查询(5)函数(列表)

        MySQL 中提供了丰富的函数,通过这些函数可以简化用户对数据的操作。MySQL中的函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、加密函数等。由于函数数量较多,不可能一一进行讲解,接下来通过 5 张表对其中一些常用函数的作用进行说明,如表下所示。

数学函数

函数名称作用
ABS(x)返回x的绝对值
SQRT(x)返回x的非负2次方根
MOD(x,y)返回x被y除后的余数
CEILING(x)返回不小于x的最小整数
FLOOR(x)回不大于x的最大整数
ROUND(x,y)返对x进行四舍五人操作,小数点后保留y位
TRUNCATE(x,y)舍去x中小数点y位后面的数
SIGN(x)返回x的符号,-1、0 或者1


字符串函数

函数名称作用
LENGTH(str)返回字符串 str 的长度
CONCAT(s1,s2,…)返回一个或者多个字符串连接产生的新的字符串
TRIM(str)删除字符串两侧的空格
REPLACE(str,s1,s2)使用字符串 s2 替换字符串 str 中所有的字符串 s1
SUBSTRING(str,n,len)返回字符串 str 的子串,起始位置为 n,长度为 len
REVERSE(str)返回字符串反转后的结果
LOCATE(s1,str)返回子串 s1 在字符串 str 中的起始位置


日期和时间函数

函数名称作用
CURDATEO()获取系统当前日期
CURTIME()获取系统当前时间
SYSDATE()获取当前系统日期和时间
TIME_TO_SECO()返回将时间转换成秒的结果
ADDDATEO()执行日期的加运算
SBUDATE()执行日期的减运算
DATE FORMAT()格式化输出日期和时间值


条件判断函数

函数名称作用
IF(expr,v1,v2)如果 expr 表达式为 true 返回 v1,否则返回 v2
IFNULL(v1,v2)如果 v1 不为 NULL 返回 v1,否则返回 v2
CASE expr WHEN v1 THEN r1[WHEN v2 THEN r2…][ELSE rn] END如果 expr 值等于 v1、v2 等,则返回对应位置 THEN后面的结果,否则返回 ELSE后的结果 rn


加密函数

函数名称作用
MD5(str)对字符串 str 进行 MD5 加密
ENCODE(str,pwd str)使用 pwd 作为密码加密字符串 str
DECODE(str,pwd_str)使用 pwd 作为密码解密字符串 str

        以上是对 MySQL 中常用函数的用法做介绍,下面就以函数 CONCAT(s1,s2,…) 和 IF(expr,v1,v2) 为例,通过案例对这两个函数的使用进行演示。

        例如,查询 student 表中的所有记录,将各个字段值使用下划线“_”连接起来,SQL 语句如下所示:
 

SELECT CONCAT (id,'_',name,'_',grade,'_',gender) FROM student;

        执行结果结果如下所示:

mysql> SELECT CONCAT (id,'_',name,'_',grade,'_',gender) FROM student;
+-------------------------------------------+
| CONCAT (id,'_',name,'_',grade,'_',gender) |
+-------------------------------------------+
| 1_songjiang_40_男                         |
| 2_wuyong_100_男                           |
| 3_ginming_90_男                           |
| 4_husanniang_88_女                        |
| 5_sunerniang_66_女                        |
| 6_wusong_86_男                            |
| 7_linchong_92_男                          |
| NULL                                      |
+-------------------------------------------+
8 rows in set (0.00 sec)

        从查询结果可以看到,通过调用 CONCAT 函数将 student 表中各个字段的值使用下划线连接起来了。需要注意的是:CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串。如有任何一个参数为 NULL,则返回值为 NULL。

        例如,查询 student 表中的 id 和 gender 字段值,如果 gender 字段的值为“男’则返回1,如果不为“男”则返回 0 ,SQL 语句如下所示:

SELECT id,IF(gender='男',1,0) FROM student;

        执行结果如下所示:

mysql> SELECT id,IF(gender='男',1,0) FROM student;
+----+----------------------+
| id | IF(gender='男',1,0)  |
+----+----------------------+
|  1 |                    1 |
|  2 |                    1 |
|  3 |                    1 |
|  4 |                    0 |
|  5 |                    0 |
|  6 |                    1 |
|  7 |                    1 |
|  8 |                    0 |
+----+----------------------+
10 rows in set (0.01 sec)

        从查询结果可以看到,student 表中 gender 字段值为“男”的记录都返回 1,gender 字段值为“女”或者“NULL”的记录都返回0。

  • 17
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Code repairman

你的鼓励将是我创作的最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值