目录
一、数值类型函数
1.1、基本函数
绝对值、向上/向下取整
select ABS(-33), CEIL(33.21), FLOOR(33.52) from dual;
随机数
select RAND(),RAND(10),RAND(10) from dual;
rand()函数:取0~1之间的随机数。
rand()可以有参数,参数是因子,也就是说,如果因子相同,那么返回的随机数也是相同的。
四舍五入与截断
select ROUND(100.23),ROUND(100.235,2) from dual;
round()函数:如果只有一个参数,默认是保留0位小数,如果有两个参数,参数2是保留小数的位数。
与round()函数不同的是,截断函数truncate()只会截断,不会四舍五入。
select TRUNCATE(100.63,0),TRUNCATE(100.63,1) from dual;
1.2、角度与弧度互换函数
1.3、三角函数
二、字符串函数
2.1、基本函数
连接函数
select CONCAT('我思','故我','在') from dual;
select CONCAT_WS('、','哈尔滨','长春','沈阳') from dual;
替换函数
select INSERT('helloworld',2,3,'AAA') from dual;
此函数的意思是,字符串helloworld取第二个下标处,往后数三个(包括下标2),替换成AAA。
注意:mysql中,下标是从1开始的。
select REPLACE('helloworld','hello','hi') from dual;
左取右取
select LEFT('helloworld',5),RIGHT('helloworld',5) from dual;
左补右补
select LPAD('hello',10,'*'),RPAD('hello',10,'*') from dual;
意思如何字段长度不满足第二个参数,则用第三个参数补全。
去除空格
去除首尾空格,中间空格不去掉。
select TRIM(' he ll o ') from dual;
select TRIM('o' from 'oheolloo') from dual;
去除收尾带o的字符串。
返回重复n次的结果
select REPEAT('abc',3) from dual;
截取字符串
select SUBSTR('helloworld',2,2) from dual;
截取helloworld从下标2开始,往后两位的结果。
返回第一次出现的索引值
select LOCATE('c','abcdefg'),LOCATE('z','abcdefg') from dual;
注意:如果没有出现过,则返回0。
返回指定位置的字符串
select ELT(3,'a','b','c','d','e') from dual;
三、日期时间函数
3.1、获取日期、时间
select CURDATE(),CURTIME(),NOW() from dual;
3.2、日期与时间戳的转换
select UNIX_TIMESTAMP(),UNIX_TIMESTAMP(now()),FROM_UNIXTIME(UNIX_TIMESTAMP()) from dual;
3.3、获取月份、星期、星期数、天数
3.4、日期的操作函数
SELECT
EXTRACT(MINUTE FROM NOW()),
EXTRACT(WEEK FROM NOW()),
EXTRACT(QUARTER FROM NOW()),
EXTRACT(MINUTE_SECOND FROM NOW())
FROM
DUAL;
3.5、日期的格式化与解析
四、流程控制函数
SELECT
last_name,
salary,
IF (
salary >= 6000,
'高工资',
'低工资'
)
FROM
employees;
SELECT
last_name,
commission_pct,
IFNULL (
commission_pct,
0
)
FROM
employees;
SELECT
last_name,
salary,
CASE
WHEN salary >= 15000 THEN
'高富帅'
WHEN salary >= 10000 THEN
'潜力股'
WHEN salary >= 8000 THEN
'一般人'
ELSE
'草根'
END
FROM
employees;