①.单行函数特征:对单行进行操作,每行返回一个结果,返回值有可能和原参数数据类型不一致,单行行数可以写在SELECT WHERE ORDER BY 字句中, 函数可以嵌套
②.单行函数的分类:字符函数、数值函数、日期函数、转换函数、流程控制函数
SELECT LOWER(name) 小写, UPPER(name) 大写
FROM stu;
SELECT CONCAT(name,id), SUBSTR(name,3,2)
FROM stu;
SELECT LENGTH(name), CHAR_LENGTH(name)
FROM stu;
SELECT LPAD(name,8,'*'), RPAD(name,8,'$'), name
FROM stu;
SELECT REPEAT(name, 3),
FROM stu;
select REVERSE(last_name), last_name
from employees
RIGHT
(str,len) LEFT
(str,len) substring类似的功能 字符串的截取。select RIGHT(last_name,2), LEFT(last_name,3),last_name
from employees
select concat(‘a’,space(10),’*’)
SELECT INStr(‘hello world’,‘o’) from dual
SELECT ABS(-1.9),CEIL(1.112),FLOOR(1.99)
SELECT MOD(8.19,3),MOD(2,0),MOD(3.11,3)
四舍五入
SELECT ROUND(1.234567,5),TRUNCATE(1.234567,5),ROUND(1274.567,-2),TRUNCATE(1274.567,-2)
0-100的随机数
SELECT CEIL(RAND() * 100)
NOW 当前时间
CURDATE 当前日期
CURTIME 当前时间
UNIX_TIMESTAMP() 时间戳 返回秒数
FROM_UNIXTIME(秒数) 返回日期 基准时间 1970-01-01 08:00:00
DATE_FORMAT(date,format_str) date转成string 格式化 类型转换
(format_str : %Y 四位 %y 两位 %M-英文的月名 %m 月的数值(01-12)%D 月的第几天 %d(0-31) %H(0-23) %h(1-12) %i %s)
DATE_ADD() DATE_ADD() 函数向日期添加指定的时间间隔。
(day year hour minute second minth week quarter)
DATE_SUB() 函数从日期减去指定的时间间隔。
DATEDIFF(datepart,startdate,enddate)函数返回两个日期之间的时间。
SELECT NOW() as 当前详细日期时间,CURDATE() as 当前日期,CURTIME() as 当前时间;
SELECT UNIX_TIMESTAMP('1970-01-01 09:00:00'),FROM_UNIXTIME(3600);
SELECT DATE_FORMAT(hiredate,'%Y年%m月%d日 %H时 %i分 %s秒')
FROM stu;
SELECT DATE_ADD(hiredate,INTERVAL 7 day),DATE_SUB(hiredate,INTERVAL 7 day),hiredate
FROM stu;
1.日期和字符串互转
DATE_FORMAT(date,format)日期转成字符串
STR_TO_DATE(str,format) 字符串转成日期
SELECT DATEDIFF(NOW(),STR_TO_DATE('1978/01/01','%Y/%m/%d'));
2.数值和字符串 隐式转换 concat(123,’’)
3.通用转换
CAST(expr AS type), CONVERT(expr,type)
IFNULL(expr1,expr2)
IF(expr1,expr2,expr3) 第一个表达式如果为true 返回2,否则返回3
CASE exp WHEN value1 THEN result1 WHEN value2 THEN result2 ELSE result3 END
CASE WHEN exp1 THEN result1 WHEN exp2 THEN result2 ELSE result3 END
SELECT IF(id is null,0,id)
FROM stu;
SELECT *,
(case job_id when 'boss' then '老板'
when 'teacher' THEN '老师'
ELSE '学生' END) as 职位
FROM jobs