SQL 里的DECODE和NVL真是两个老朋友了,用得熟能省掉不少 if-else,查询速度还挺快。DECODE就像 SQL 里的多路选择器,给它一个值,它会帮你对照条件表,一一匹配,找不到就用默认值。写报表、做字段映射的时候省事。
NVL则是个补位高手,专门把 NULL 值换成你想要的默认值。比如 NVL(user_name, '未知'),这样结果里就不会出现莫名的空白,看起来舒服多了。和 DECODE 搭配着用,逻辑判断能玩出花。
用法也直白,比如:
SELECT DECODE(WP01.ONDO_KBN, 0, '室外', 1, '常温', 2, '保冷') AS ONDO_KBN
FROM WP01_S_HAITOTAL WP01;
这样一来,数字状态码直接变成可读的文字,维护起来轻松多了。
要注意的是,DECODE 是 Oracle 的专属语法,换数据库就没它了。如果你用的是 Oracle 项目,报表、统计、字段转换都可以大胆上 DECODE+NVL 组合拳。想深入一点,你还可以看看《使用 DECODE 函数优化 ORACLE SQL 性能》和《Oracle SQL 中的 NVL 函数应用指南》,里面有不少实战例子。