MySQL--函数、谓词、case表达式

本文详细介绍了MySQL中的各种函数,包括算术、字符串、日期、转换等函数,以及谓词如LIKE、BETWEEN、IS NULL、IN、EXISTS的使用。还讲解了CASE表达式的应用,包括其在SQL查询中的重要性。
摘要由CSDN通过智能技术生成

1 各种各样的函数

根据用途,函数大致也可以分为算术函数、字符串函数、日期函数、转换函数(用来转换数据类型和值的函数)、聚合函数(用来进行数据聚合的函数)
聚合函数基本上只包含count、sum、avg、max、min这5种,其他种类的函数总数则超过200多种。

算术函数

包括加减乘除,这些算术运算符具有“根据输入值返回相应输出结果”的功能。
常用numeric(全体位数,小数位数),通过此函数来指定数值的大小。
为了学习算术函数,首先创建一张samplemath表,并插入数据

mysql> create table samplemath
    -> (m numeric (10,3),
    -> n integer,
    -> p integer);

--DML:插入数据
START TRANSACTION;

INSERT INTO SampleMath(m, n, p) VALUES (500,  0,    NULL);
INSERT INTO SampleMath(m, n, p) VALUES (-180, 0,    NULL);
INSERT INTO SampleMath(m, n, p) VALUES (NULL, NULL, NULL);
INSERT INTO SampleMath(m, n, p) VALUES (NULL, 7,    3);
INSERT INTO SampleMath(m, n, p) VALUES (NULL, 5,    2);
INSERT INTO SampleMath(m, n, p) VALUES (NULL, 4,    NULL);
INSERT INTO SampleMath(m, n, p) VALUES (8,    NULL, 3);
INSERT INTO SampleMath(m, n, p) VALUES (2.27, 1,    NULL);
INSERT INTO SampleMath(m, n, p) VALUES (5.555,2,    NULL);
INSERT INTO SampleMath(m, n, p) VALUES (NULL, 1,    NULL);
INSERT INTO SampleMath(m, n, p) VALUES (8.76, NULL, NULL);

COMMIT;

确认表格中的数据

mysql> select * from samplemath;
+----------+------+------+
| m        | n    | p    |
+----------+------+------+
|  500.000 |    0 | NULL |
| -180.000 |    0 | NULL |
|     NULL | NULL | NULL |
|     NULL |    7 |    3 |
|     NULL |    5 |    2 |
|     NULL |    4 | NULL |
|    8.000 | NULL |    3 |
|    2.270 |    1 | NULL |
|    5.555 |    2 | NULL |
|     NULL |    1 | NULL |
|    8.760 | NULL | NULL |
+----------+------+------+

abs–绝对值

语法:abs(数值)
计算数值的绝对值

mysql> select m,abs(m) as abs_col from samplemath;
+----------+---------+
| m        | abs_col |
+----------+---------+
|  500.000 | 500.000 |
| -180.000 | 180.000 |
|     NULL |    NULL |
|     NULL |    NULL |
|     NULL |    NULL |
|     NULL |    NULL |
|    8.000 |   8.000 |
|    2.270 |   2.270 |
|    5.555 |   5.555 |
|     NULL |    NULL |
|    8.760 |   8.760 |
+----------+---------+

我们可以注意到,abs函数的参数为null时,结果也是null,并非只有abs如此,其实绝大多数函数对于null都返回null(转换函数中的coalesce函数除外)。

mod–求余

语法:mod(被除数,除数),例如mod(7,3)的结果是1.条件是两个参数必须是整数。(注意:sql server不支持mod函数,用%计算余数 )
例如计算n÷p的余数

mysql> select n,p,mod(n,p) as mod_col from samplemath;
+------+------+---------+
| n    | p    | mod_col |
+------+------+---------+
|    0 | NULL |    NULL |
|    0 | NULL |    NULL |
| NULL | NULL |    NULL |
|    7 |    3 |       1 |
|    5 |    2 |       1 |
|    4 | NULL |    NULL |
| NULL |    3 |    NULL |
|    1 | NULL |    NULL |
|    2 | NULL |    NULL |
|    1 | NULL |    NULL |
| NULL | NULL |    NULL |
+------+------+---------+

round–四舍五入

语法:round(对象数值,保留小数的位数)。如果指定四舍五入的位数为1,那么就会对小数点第2位进行四舍五入处理。如果指定位数为2,那么就会对第3位进行四舍五入处理。
例如,对m列的数值进行n列位数的四舍五入处理:

mysql> select m,n,round(m,n) as round_col from samplemath;
+----------+------+-----------+
| m        | n    | round_col |
+----------+------+-----------+
|  500.000 |    0 |   500.000 |
| -180.000 |    0 |  -180.000 |
|     NULL | NULL |      NULL |
|     NULL |    7 |      NULL |
|     NULL |    5 |      NULL |
|     NULL |    4 |      NULL |
|    8.000 | NULL |      NULL |
|    2.270 |    1 |     2.300 |
|    5.555 |    2 |     5.560 |
|     NULL |    1 |      NULL |
|    8.760 | NULL |      NULL |
+----------+------+-----------+

字符串函数

为了学习字符串函数,我们首先创建samplestr表,然后插入数据。

mysql> create table samplestr
    -> (str1 varchar(40),
    -> str2 varchar(40),
    -> str3 varchar(40));

START TRANSACTION;

INSERT INTO SampleStr (str1, str2, str3) VALUES ('opx',	        'rt'	,	NULL);
INSERT INTO SampleStr (str1, str2, str3) VALUES ('abc'	,	'def'	,	NULL);
INSERT INTO SampleStr (str1, str2, str3) VALUES ('山田'	,	'太郎'  ,	'是我');
INSERT INTO SampleStr (str1, str2, str3) VALUES ('aaa'	,	NULL    ,	NULL);
INSERT INTO SampleStr (str1, str2, str3) VALUES (NULL	,	'xyz',	        NULL);
INSERT INTO SampleStr (str1, str2, str3) VALUES ('@!#$%',	NULL	,	NULL);
INSERT INTO SampleStr (str1, str2, str3) VALUES ('ABC'	,	NULL	,	NULL);
INSERT INTO SampleStr (str1, str2, str3) VALUES ('aBC'	,	NULL	,	NULL);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值