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);