数据处理函数在不同的数据库中可能存在差异,mysql和 oracel 等 可能不一样

函数名 描述
lower 转小写
upper 转大写
substr 字符串截取
length 获取字符串长度
trim 去除前后空格
round 保留小数
rand 随机数
ifnull 判断字段是否是空, 如果是,可以复写一个值代替null

upper 转大写

将英文名转大写

  1. select upper(name) as name from person;

image.png

lower 转小写

select lower(name) as name from person;

为什么要加 as 因为 转成小写或者大写以后,如果不加 as 重命名,返回的就是 lower(name) 这样的列名

substr 截取字符串

select substr(name, 1, 2) from person;

substr(字段名,要截取的起点位置 start,要截取的长度-length)
image.png

查询员工名字第二个字母是 c的

select name from person where substr(name, 2,1) = 'c';

select name from person where name like '_c%';

上面2种方式 都是可以的

length 获取字符串长度

select name, length(name) as length from person;

image.png

上面截图说明 中文,一个字 占3个字节

trim 去除前后空格

// 假设这个name 是前端传入的,存在空格,那么此时我们数据库是查询不到记录的,因为存在空格,匹配不到
select name from person where name = '  账上 ';

// 使用 trime函数 去除前后空格,就能够查询到了
select name from person where name = trim('  账上 ');

round 保留小数, 四舍五入

小数点后第一位,1-4 直接舍去
小数点后第一位, 5-9 进位

round第二个参数, 表示要保留几位小数

select round(123.456); // 舍去小数 直接返回 123 , 保留整数位, round第二个参数默认是0

select round(123.557); // 进位 直接返回 124

select round(123.557, 1); // 保留一位小数 123.6

select round(123.557, -1); // 120, 保留到个位数,发现3小于4,直接舍去,变成0

select round(123.557, -2); // 100  保留到百位数, 2小于4 舍去,变成0

image.png

一般开发中,没有人给round传 负数

rand() 随机数

生成随机数

select name, rand() from person;

select round(rand() * 100); // 生成0-100 的随机数

image.png

ifnull 空值处理函数, 将null 转化成一个具体的值

查询出员工薪资是null 的 显示成 0

select name, ifnull(salary, 0) from person;

image.png

注意事项

  1. 数据库里面,只要有空值 Null, 参与运算的,其结果,都是null

image.png

现在,老板说,今年所有人涨薪1000 那么下面新人是null 如果直接 +1000 仍旧是null, 使用ifnull 处理

select name, ifnull(salary, 0) + 1000 as salary from person;