专家...
我正在尝试修复以下简单查询以包含空条件。
我可以在where子句中使用“IS NOT NULL”并忽略记录,但这不是最好的方法。想以正确的方式解决这个问题。
在当前解码过程下面列出所有进程并用JDBC替换“1234 @ xzy”,“1234 @ abc”。当列表中存在null时,此解码在脚本中无法正常工作。
问题: 1.是否可以修改当前解码以用NA替换null?
Query in oracle:
SELECT osuser, machine,
DECODE (process, '1234', 'JDBC', substr(process, 1, instr(process || '@','@')-1)) "PID"
FROM v$session
WHERE username IS NOT NULL;
Expected Result:
===============
4567
78960
4575
JDBC
JDBC
NA
9658
Process list:
=============
4567
78960
4575
1234@abc
1234@xyz
(null)
9658
答案 0 :(得分:1)
您可以使用decode
表达式包装nvl
表达式:
SELECT osuser, machine,
NVL(DECODE (process,
'1234', 'JDBC',
substr(process, 1, instr(process || '@','@')-1)),
'NA') "PID"
FROM v$session
WHERE username IS NOT NULL;