一、最常用字符串函数(高频)
sql
1. SUBSTR(字段, 起始位, 长度) -- 截取字符串
SUBSTR('202503', -2, 2) → '03'
2. LENGTH(字段) -- 长度
3. LENGTHB(字段) -- 字节长度(中文2字节)
4. TRIM(字段) -- 去空格
5. NVL(字段, 0) -- 空值替换(最常用)
6. DECODE(字段,A,B,C,D,E) -- 等值判断
DECODE(STATUS,'1','正常','0','禁用','未知')
7. INSTR(字符串, 字符) -- 查找位置
INSTR(C_KM_CODE,'_') =0 → 不含下划线
8. REPLACE(字段,旧,新) -- 替换
二、数值运算(必用)
sql
1. SUM(字段) -- 求和
2. COUNT(*) -- 计数
3. AVG() -- 平均
4. MAX()/MIN() -- 最大/最小
5. ROUND(数值, 位数) -- 四舍五入
6. CEIL(数值) -- 向上取整
7. MOD(数值, 基数) -- 取余(分页常用)
MOD(rownum,100) → 0-99循环
三、日期函数(超级常用)
sql
1. SYSDATE -- 当前系统时间
2. TRUNC(SYSDATE) -- 今天 00:00:00
3. 字段 + 1 -- 加1天
4. ADD_MONTHS(日期, 月份) -- 加月份
5. LAST_DAY(日期) -- 当月最后一天
6. TO_CHAR(日期,'yyyy-MM-dd') -- 转字符串
7. TO_DATE('20250101','yyyyMMdd') -- 转日期
四、条件判断(写业务必用)
1. DECODE(简单判断)
sql
DECODE(C_DAT_CLS,'CLS_HB','场外','场内')
2. CASE WHEN(复杂业务,最常用)
sql
CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2
ELSE 默认值
END
五、多表连接(你天天写)
sql
1. LEFT JOIN -- 左连接(保留左表全部)
2. INNER JOIN -- 内连接(只保留匹配)
3. FULL JOIN -- 全连接(两边都保留,对账用)
4. WHERE A.ID = B.ID(+) -- Oracle 旧版左连接
六、子查询 / WITH 子句(复杂报表)
sql
-- 公用表表达式(推荐)
WITH TEMP AS (
SELECT * FROM 表
)
SELECT * FROM TEMP
七、分组与过滤
sql
GROUP BY 字段1,字段2
HAVING SUM(金额) > 0 -- 分组后过滤
八、分页 / 行号(常用)
sql
SELECT ROWNUM, t.* FROM 表 t
WHERE ROWNUM <= 100
九、常用符号
sql
<> 不等于
LIKE 模糊匹配 '%A%'
IN 在列表中
IS NULL / IS NOT NULL
十、你业务中最常用的组合(重点记)
sql
1. NVL(字段, 0) -- 空值变0
2. SUBSTR(字段,-2,2) -- 取最后两位
3. CASE WHEN 业务判断 THEN 显示 END
4. SUM(DECODE(类型,码值,金额)) -- 行转列统计
5. LEFT JOIN 对账、关联字典