目录
1. 字符串函数
1.1 LENGTH 函数:返回字符串的长度。
-- 结果为 12
SELECT LENGTH('Hello World!') FROM dual;
1.2 UPPER 函数:将字符串转换为大写。
-- 结果为 HELLO WORLD!
SELECT UPPER('hello world!') FROM dual;
1.3 LOWER 函数:将字符串转换为小写。
-- 结果为 hello world!
SELECT LOWER('HELLO WORLD!') FROM dual;
1.4 CONCAT 函数:将两个字符串连接起来。
-- 结果为 HelloWorld!
SELECT CONCAT('Hello', 'World!') FROM dual;
1.5 SUBSTR 函数(第几个位置开始,截取多长)。
-- 结果为 Wo
SELECT SUBSTR('Hello World!', 7, 2) FROM dual;
1.6 SUBSTR 函数(第几个位置开始,截取多长) -- 结果:Hello
SELECT SUBSTR('Hello, world!', 1, 5) FROM DUAL;
1.7 INSTR 函数:返回一个字符串中某个子字符串的位置。
-- 结果为 7
SELECT INSTR('Hello World!', 'World') FROM dual;
1.8 TRIM 函数:去掉字符串的头尾空格。
-- 结果为 Hello World!
SELECT TRIM(' Hello World! ') FROM dual;
1.9 REPLACE 函数:替换字符串中的子串 -- 结果:Hello, Oracle!
SELECT REPLACE('Hello, world!', 'world', 'Oracle') FROM DUAL;
1.10 REGEXP_SUBSTR 函数: 数字表什么位置开始,一般是1(可不填),‘[^,]’是非逗号,‘[^,]+’ 是这里指以逗号切分的连接数据
SELECT REGEXP_SUBSTR('a,bc', '[^,]+',1) val FROM dual; -- 结果:a SELECT REGEXP_SUBSTR('a,bc', '[^,]+',2) val FROM dual; -- 结果:bc SELECT REGEXP_SUBSTR('a,bc', '[^,]+',3) val FROM dual; -- 结果:bc SELECT REGEXP_SUBSTR('a,bc', '[^,]+',4) val FROM dual; -- 结果:c
1.11 REGEXP_SUBSTR 函数: 获取字符串中的部分数字
select regexp_replace('ABC23w-ABC','[^[:digit:]]','') from dual; -- 结果23
1.12 REGEXP_COUNT 函数: 意思是统计有多少个什么。例如这里是有多少个‘,’号
SELECT REGEXP_COUNT('a,b,c', ',') val FROM dual; -- 结果是: 2 SELECT REGEXP_COUNT('a,bc', ',') val FROM dual; -- 结果是: 1
2. 数值函数
2.1 ROUND 函数:四舍五入 -- 结果:3.14
SELECT ROUND(3.14159, 2) FROM DUAL;
2.2 TRUNC 函数:截断小数 -- 结果:3.14
SELECT TRUNC(3.14159, 2) FROM DUAL;
2.3 MOD 函数:取模运算 -- 结果:1
SELECT MOD(10, 3) FROM DUAL;
3. 日期函数
3.1 SYSDATE 函数:返回当前系统时间 -- 结果:2022-10-01 10:00:00
SELECT SYSDATE FROM DUAL;
3.2 时间格式转换
SELECT TO_CHAR(SYSDATE,'yyyy-MM-dd hh24:mi:ss') FROM dual; -- 结果:2022-10-01 10:00:00 SELECT TO_CHAR(SYSDATE,'hh24:mi:ss') FROM dual; -- 结果:10:00:00
3.3 TO_DATE 函数:将字符串转换为日期类型 -- 结果:2022-10-01 00:00:00
SELECT TO_DATE('2021-10-01', 'yyyy-mm-dd') FROM DUAL;
3.4 ADD_MONTHS 函数:增加月份 -- 结果:2021-11-01 00:00:00.000
SELECT ADD_MONTHS(TO_DATE('2021-10-01', 'yyyy-mm-dd'), 1) FROM DUAL;
3.5 NUMTODSINTERVAL函数:同一天相减,获取时分秒 HH24:Mi:SS
SELECT SUBSTR(TO_CHAR( NUMTODSINTERVAL((to_date('2023-11-10 05:04:03','yyyy-mm-dd hh24:mi:ss')-to_date('2023-11-10 04:03:02','yyyy-mm-dd hh24:mi:ss') ) * 24 * 60,'MINUTE' ) ,'HH24:Mi:ss' ) , 12, 8) dt FROM dual; -- 返回 01:01:01
4.聚合/计算函数
4.1 AVG 函数:计算平均值
SELECT AVG(salary) FROM tableName;
4.2 SUM 函数:计算总和
SELECT SUM(salary) FROM tableName;
4.3 COUNT 函数:计算记录数
SELECT COUNT(*) FROM tableName;
5.填充函数
5.1 LPAD 函数:从左边开始填充 。
-- 结果为 01:19
select LPAD('1:19',5,'0') from dual; -- 参数1:当前值 = '1:19' -- 参数2:补充参数到几位数 = 5 -- 参数3:补充的参数 = 0
5.2 RPAD 函数:从右边开始填充 。
-- 结果为 1:190
select RPAD('1:19',5,'0') from dual; -- 参数1:当前值 = '1:19' -- 参数2:补充参数到几位数 = 5 -- 参数3:补充的参数 = 0
6.逻辑判断返回参数
6.1 nvl(); 函数
SELECT nvl(value1,value2) FROM dual; -- 如果value1 不为空则返回,反之是 value2
6.2 case when 比较 then 满足条件结果 else 不满足条件 end ; 函数
SELECT case when 'A' ='A' then 1 else 2 END val FROM dual -- 返回 1
6.3 DECODE(表达式, 比较值1, 结果1, 比较值2, 结果2, ..., default) 函数
SELECT jiage, DECODE(name, 'xin', jiage * 1.1, 'xique', jiage * 1.15, 'jingping', jiage * 2, jiage * 1.05 ) xin_jiage, DECODE(name, 'xin', '新鲜', 'xique', '稀缺', 'jingping', '精品', '一般' ) name FROM ( SELECT 100 jiage, 'xin' name FROM dual UNION ALL SELECT 100 jiage, 'xique' name FROM dual UNION ALL SELECT 100 jiage, 'putong' name FROM dual UNION ALL SELECT 100 jiage, 'jingping' name FROM dual ); -- 返回 -- JIAGE XIN_JIAGE NAME -- 100 110 新鲜 -- 100 115 稀缺 -- 100 105 一般 -- 100 200 精品
-------