数据处理函数在不同的数据库中可能存在差异,mysql和 oracel 等 可能不一样
| 函数名 | 描述 |
|---|---|
| lower | 转小写 |
| upper | 转大写 |
| substr | 字符串截取 |
| length | 获取字符串长度 |
| trim | 去除前后空格 |
| round | 保留小数 |
| rand | 随机数 |
| ifnull | 判断字段是否是空, 如果是,可以复写一个值代替null |
upper 转大写
将英文名转大写
select upper(name) as name from person;

lower 转小写
select lower(name) as name from person;
为什么要加 as 因为 转成小写或者大写以后,如果不加 as 重命名,返回的就是 lower(name) 这样的列名
substr 截取字符串
select substr(name, 1, 2) from person;
substr(字段名,要截取的起点位置 start,要截取的长度-length)
查询员工名字第二个字母是 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;

上面截图说明 中文,一个字 占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

一般开发中,没有人给round传 负数
rand() 随机数
生成随机数
select name, rand() from person;
select round(rand() * 100); // 生成0-100 的随机数

ifnull 空值处理函数, 将null 转化成一个具体的值
查询出员工薪资是null 的 显示成 0
select name, ifnull(salary, 0) from person;

注意事项
- 数据库里面,只要有空值 Null, 参与运算的,其结果,都是null

现在,老板说,今年所有人涨薪1000 那么下面新人是null 如果直接 +1000 仍旧是null, 使用ifnull 处理
select name, ifnull(salary, 0) + 1000 as salary from person;
