单行处理函数也叫做数据处理函数

单行处理函数的特点:

​ 一个输入对应一个输出

和单行处理函数相对的是:

​ 多行处理函数(特点:多个输入,对应一个输出)

常见的单行处理函数

  1. lower 转换小写

    select lower(name) from city;

  2. upper 转换大写

    select upper(name) from city;

  3. substr 取子串

    substr (被截取的字符串,起始下标,截取的长度)// 注意起始下标从 1 开始,没有 0

    select substr(name, 1, length(name)) from city;

  4. concat 进行字符串拼接

    select concat(name, countrycode) from city;

  5. length 取长度

    select length(name) from city;

  6. trim 去除空格

    select * from city where name = trim (’ King ');// 将查询条件中的前后空格去除

  7. 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

  8. rand 生成随机数

    select rand() from city;

    例如:生成 100 以内的随机数

    select round(rand() * 100, 0) from city;

  9. ifnull 可以将 null 转换成一个具体值。

    ifnull 是空处理函数。专门处理空的。(因为在所有数据库中,只要有 null 参与的数学运算,最终结果都为 null)

    ifnull 函数语法:ifnull (数据,被当作那个值)

    如果 “数据” 为 null 的时候,把这个数据当作那个值

  10. 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;

  11. format 数字格式化
    format (数字,‘格式’)

    select ename, (sal, ‘$999,999’) from emp;

  12. str_to_date

    字符串转换为 date 类型

    str_to_date (‘日期字符串’, ‘日期格式’)

    Mysql 中日期格式:
    % Y 年
    % m 月
    % d 日
    % h 时
    % i 分
    % s 秒

    Java 中日期格式:
    yyyy-MM-dd HH:mm:ss SSS

  13. 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’));// 正确