单行处理函数也叫做数据处理函数
单行处理函数的特点:
一个输入对应一个输出
和单行处理函数相对的是:
多行处理函数(特点:多个输入,对应一个输出)
常见的单行处理函数
-
lower 转换小写
select lower(name) from city;
-
upper 转换大写
select upper(name) from city;
-
substr 取子串
substr (被截取的字符串,起始下标,截取的长度)// 注意起始下标从 1 开始,没有 0
select substr(name, 1, length(name)) from city;
-
concat 进行字符串拼接
select concat(name, countrycode) from city;
-
length 取长度
select length(name) from city;
-
trim 去除空格
select * from city where name = trim (’ King ');// 将查询条件中的前后空格去除
-
round 四舍五入
select 字段 from 表名;
select name from city;
select ‘abc’ from city;//select 后面直接跟 “字面量”/“字面值”
结论:select 后面可以跟某个表的字段名(可以等同看作变量名),也可以跟字面量 / 字面值(数据)
例如:
select round (1276.567, 2) from city;// 保留二位小数 1276.57
select round (1276.567, 1) from city;// 保留一位小数 1276.6
select round (1276.567, 0) from city;// 保留整数 1277
select round (1276.567, -1) from city;// 保留到十位 1270
select round (1276.567, -2) from city;// 保留到百位 1280
-
rand 生成随机数
select rand() from city;
例如:生成 100 以内的随机数
select round(rand() * 100, 0) from city;
-
ifnull 可以将 null 转换成一个具体值。
ifnull 是空处理函数。专门处理空的。(因为在所有数据库中,只要有 null 参与的数学运算,最终结果都为 null)
ifnull 函数语法:ifnull (数据,被当作那个值)
如果 “数据” 为 null 的时候,把这个数据当作那个值
-
case when … then … when … then … else … end
例如:当员工的岗位为 MANAGER 的时候,工资上调 %10,当工作岗位是 SALESMAN 的时候,工资上调 %50,其他正常。
(注意:不修改数据库,只是将查询结果显示为工资上调)
select
ename,
job,
sal as oldsal,
(case when ‘MANAGER’ then sal*1.1 when ‘SALESMAN’ then sal**1.5 else sal end) as newsal
from emp;
-
format 数字格式化
format (数字,‘格式’)select ename, (sal, ‘$999,999’) from emp;
-
str_to_date
字符串转换为 date 类型
str_to_date (‘日期字符串’, ‘日期格式’)
Mysql 中日期格式:
% Y 年
% m 月
% d 日
% h 时
% i 分
% s 秒Java 中日期格式:
yyyy-MM-dd HH:mm:ss SSS -
date_format
从 date 类型转换为具有一定格式的字符串类型
date_format (日期值,‘日期格式’)
insert into test values(1, ‘zhangsan’, str_to_date(‘10:13:20 11-11-1999’, ‘%h:%i:%s %d-%m-%Y’));
insert into test values (1, ‘zhangsan’, str_to_date (‘11-1999’, ‘% m-% Y’));//date 类型为年月日,插入的值不完整,所以报错
insert into test values(1, ‘zhangsan’, str_to_date(‘11-1999’, ‘11-%m-%Y’));
insert into test values(1, ‘zhangsan’, str_to_date(‘10-11-1999’, ‘10-%m-%Y’));
insert into test values (1, ‘zhangsan’, str_to_date (‘10-11-1999’, ‘% d-% m-% Y’));// 正确