oracle sql developer中的IIF语句
Posted
技术标签:
【中文标题】oracle sql developer中的IIF语句【英文标题】:IIF statement in oracle sql developer 【发布时间】:2013-07-26 17:52:51 【问题描述】:有一个我正在尝试转换为 oracle sql dev 的访问查询。似乎我在 IIf(vw_gdp_currentqry.LOC='0300','F','P') AS SRCE 有错误,有人可以帮忙
SELECT
vw_gdp_currentqry.YEAR,
vw_gdp_currentqry.LOC,
**IIf(vw_gdp_currentqry.LOC='0300','F','P') AS SRCE,**
vw_gdp_currentqry.METHOD,
vw_gdp_currentqry.current_value
FROM vw_gdp_currentqry
WHERE vw_gdp_currentqry.IND)='TOT';
【问题讨论】:
IIF 是访问特定的。您需要将语法转换为目标数据库支持的内容。解码、大小写是执行此操作的两个主要示例。 不仅访问而且 Transact SQL 具有内置函数 IIF。该问题与“通用” sql 区域有关。 【参考方案1】:试试decode
函数
SELECT
vw_gdp_currentqry.YEAR,
vw_gdp_currentqry.LOC,
decode (vw_gdp_currentqry.LOC,'0300', 'F', 'P' ) AS SRCE,
vw_gdp_currentqry.METHOD,
vw_gdp_currentqry.current_value
FROM vw_gdp_currentqry
WHERE vw_gdp_currentqry.IND='TOT';
或使用case
语法
SELECT
vw_gdp_currentqry.YEAR,
vw_gdp_currentqry.LOC,
case vw_gdp_currentqry.LOC
when '0300' then 'F'
else 'P'
end AS SRCE,
vw_gdp_currentqry.METHOD,
vw_gdp_currentqry.current_value
FROM vw_gdp_currentqry
WHERE vw_gdp_currentqry.IND='TOT';
更多信息
Decode Case Case vs Decode【讨论】:
【参考方案2】:可以使用NULLIF
和NVL2
的组合。
如果vw_gdp_currentqry.LOC
是NOT NULL
,则只能使用此组合,在您的情况下是这样:
SELECT
vw_gdp_currentqry.YEAR,
vw_gdp_currentqry.LOC,
nvl2(nullif(vw_gdp_currentqry.LOC,'0300'),'P','F'),
vw_gdp_currentqry.METHOD,
vw_gdp_currentqry.current_value
FROM vw_gdp_currentqry
WHERE vw_gdp_currentqry.IND='TOT';
【讨论】:
以上是关于oracle sql developer中的IIF语句的主要内容,如果未能解决你的问题,请参考以下文章
如何避免 Oracle SQL Developer 中的变量替换
为啥 SQL Developer 与 SQL Plus 中的 Oracle PL/SQL 响应时间存在差异?
Oracle SQL Developer 中的 Varchar2 变量