将 Decode Substr Oracle 查询转换为 SQL 服务器
Converting Decode Substr Oracle query to SQL Server
我有一个 Oracle 查询,我正在尝试将其转换为 SQL Server 2012,但我发现很难看出我是如何实现同样的事情的。
有问题的 SQL 是:
SELECT decode( substr(a.Code, 1, 8), 'APP VARY', 'C', 'B') AS Value1
From tblA a
如果我理解正确,DECODE
是在 SQL 服务器中执行 IIF
的 ORACLE 方法。所以我想我可以使用类似的东西:
Select IIF(SUBSTRING(a.Code,1,8)='APP VARY','C','B') as Value1
这样看起来对吗?
有人知道我如何在 SQL 服务器中实现同样的事情吗?
如评论中所述,case
表达式似乎就是您想要的,例如
case substring(a.Code, 1, 8) when 'APP VARY' then 'C' else 'B' end
注意:并将 substr
替换为 substring
。
事实上,使用 like
应该完成同样的事情并且表现更好:
case when a.Code like 'APP VARY%' then 'C' else 'B' end
我有一个 Oracle 查询,我正在尝试将其转换为 SQL Server 2012,但我发现很难看出我是如何实现同样的事情的。
有问题的 SQL 是:
SELECT decode( substr(a.Code, 1, 8), 'APP VARY', 'C', 'B') AS Value1
From tblA a
如果我理解正确,DECODE
是在 SQL 服务器中执行 IIF
的 ORACLE 方法。所以我想我可以使用类似的东西:
Select IIF(SUBSTRING(a.Code,1,8)='APP VARY','C','B') as Value1
这样看起来对吗?
有人知道我如何在 SQL 服务器中实现同样的事情吗?
如评论中所述,case
表达式似乎就是您想要的,例如
case substring(a.Code, 1, 8) when 'APP VARY' then 'C' else 'B' end
注意:并将 substr
替换为 substring
。
事实上,使用 like
应该完成同样的事情并且表现更好:
case when a.Code like 'APP VARY%' then 'C' else 'B' end