zer*_*ble 0 database oracle excel vba plsql
我有一个相当简单的PL/SQL查询
(...)
DECODE(upper(Table.Column), 'SOMETHING', '---', TABLE2.COLUMN2) as VALUE
(...)
Run Code Online (Sandbox Code Playgroud)
如何使用上面的语句应用WHERE子句,因为当我使用类似的东西时:
WHERE upper(VALUE) like 'SOMETHING'
Run Code Online (Sandbox Code Playgroud)
它给了我一个空记录集(我绝对肯定有记录符合这些要求).
我不知道这是否重要,但我在Excel工作簿中调用此查询,使用VBA和CreateObject("OracleInProcServer.XOraSession").
接受的解决方案的问题是您必须两次写出DECODE表达式.这可能是一个维护问题,因为它打开了表达式的两个实例在某些时候会出现分歧的可能性.
另一种方法是嵌套查询,以便您可以直接在谓词中使用DECODE的结果.
SELECT * FROM (
SELECT DECODE(upper(Table.Column), 'SOMETHING', '---', TABLE2.COLUMN2) as VALUE
FROM ...
)
WHERE UPPER(value) LIKE 'X%'
Run Code Online (Sandbox Code Playgroud)