来自IIF的CASE转换

时间:2013-03-19 17:43:58

标签: sql oracle ms-access oracle-sqldeveloper

我开始使用SQL(访问)

IIf(Len([CAT]) < 3, 
Left([CAT],1) & 0 & Right([CAT],1),
[CAT]) AS CAT1, 
[HD0] &

IIf([TABLE].[HD1]<>"00",
" / " & [HD1_ABR],
Null) & 
IIf([HD2]<>"00",
" / " & [HD2_NAME],
Null) & 
IIf([HD3]<>"000",
" / " & [HD3_NAME],
Null) & 
IIf([HD4]<>"00",
" / " & [HD4_NAME]) AS NAME,

并做了Oracle(Sql Developer)

Case
When length(cat) < 3
Then SubStr(cat,1,1) || '0' || SubStr(cat,-1,1)
Else cat
End cat1,hd0
Case
When TABLE <>"00"
then " / "
else HD1_ABR,null

当我在SQLDev中运行查询时,我收到错误 命令行错误:9列:4 错误报告: SQL错误:ORA-00923:找不到FROM关键字 00923. 00000 - “找不到FROM关键字”

1 个答案:

答案 0 :(得分:2)

MS Access语法与Oracle语法完全不同。没有方括号,SQL函数的名称也不同。 http://docs.oracle.com/cd/E11882_01/server.112/e17118/functions.htm#SQLRF006

 Case
   When length(cat) < 3
   Then SubStr(cat,1,1) || '0' || SubStr(cat,-1,1)
   Else cat
 End cat1