#数据处理函数/单行处理函数
#数据处理函数
#数据处理函数又被称为单行处理函数
#单行处理函数的特点:一个输出对应一个输出。和单行处理函数相对的是,多行处理函数(多行处理函数特点,多个输入对应一个输出。)
#单行处理函数常见的有哪些?
#LOWER(str) 转换小写
SELECT LOWER(ename) FROM emp;
#UPPER(str) 转换大写
SELECT UPPER(enam) FROM student;
#SUBSTR() 取子串(SUBSTR(被截取的字符串,起始下标,截取的长度))
SELECT SUBSTR(ename,1,1) as ename FROM emp;
#请找出员工名字第一个字母是A的员工信息
#第一种模糊查询
SELECT ename FROM emp WHERE ename LIKE ‘A%‘;
#第二种方式:SUBSTR()函数
SELECT ename FROM emp WHERE SUBSTR(ename,1,1) = ‘A‘;
#首字母大写
SELECT UPPER(SUBSTR(ename,1,1)) FROM emp;
SELECT SUBSTR(ename,2,LENGTH(ename)-1) FROM emp;
SELECT
CONCAT(UPPER(SUBSTR(ename,1,1)),SUBSTR(ename,2,LENGTH(ename)-1)) as result
FROM
emp;
# CONCAT()函数进行字符串的拼接
SELECT CONCAT(empno,ename) FROM emp;
#length取长度
SELECT LENGTH(ename) as enamelength FROM emp;
#trlm去空格
SELECT * FROM emp WHERE ename = ‘ KING‘; #查不到
SELECT * FROM emp WHERE ename = TRIM(‘ KING‘);#可以查到
#STR_TO_DATE() 将字符串转换成日期
#DATE_FORMAT() 格式化日期
#FORMAT() 设置千分位
#case..when..then..when...then...else...end
#当员工的工作岗位是MANANGER时,工资上调10%,当员工工作岗位是SALESMAN的时候,工资上调百分之50(不修改数据库,只是将查询结果显示为工资上调)
SELECT
ename,job,
sal as oldsal,
(CASE job WHEN ‘manager‘ THEN sal*1.1 WHEN ‘salesman‘ THEN sal*1.5 ELSE sal END) as newsal
FROM emp;
# ROUND()四舍五入
SELECT 字段 FROM 表名;
SELECT ename FROM emp;
SELECT ‘abc‘ FROM emp; #SELECT 后面直接跟“字面量/字面值”
SELECT abc FROM emp;
#> 1054 - Unknown column ‘abc‘ in ‘field list‘ 会报错 因为会把abc当做一个字段的名字,去emp表中找abc字段去了。
SELECT 1000 as num FROM emp; #1000也是被当做一个字面量/字面值。
#结论:SELECT后面可以跟某个表的字段名(可以等同看做变量名),也可以跟字面量/字面值(数据)。
SELECT 21000 as num FROM dept;
SELECT ROUND(1236.231,0) as result FROM emp;#保留整数位
SELECT ROUND(1236.231,1) as result FROM emp; #保留1个小数
SELECT ROUND(1236.231,-1) as result FROM emp;#保留到十位
SELECT ROUND(1234.231,-2) as result FROM emp;#保留到百位
#rand 生成随机数
SELECT RAND() FROM emp;
SELECT RAND()*100 FROM emp;
SELECT ROUND(RAND()*100) FROM emp; # 100以内的随机数
#IFNULL() 可以将null 转换成一个具体值
#IFNULL() 是空处理函数。专门处理空的。在所有数据库当中,只要有Null参与的数学运算,最终结果就是NULL。为了避免这个现象,需要使用ifnull函数
SELECT ename,sal + comm as selcomm FROM emp;
#计算年薪 补助为NULL时,将补助当做0;
SELECT ename, ((sal + IFNULL(comm,0))*12)FROM emp;