【问题标题】:Converting Decode Substr Oracle query to SQL Server将 Decode Substr Oracle 查询转换为 SQL Server
【发布时间】:2020-10-07 19:52:25
【问题描述】:

我有一个 Oracle 查询,我正在尝试将其转换为 SQL Server 2012,但我发现很难看到我是如何实现同样的目标的。

有问题的 SQL 是:

SELECT decode( substr(a.Code, 1, 8), 'APP VARY', 'C', 'B') AS Value1
From tblA a

如果我理解正确,DECODE 是 ORACLE 在 SQL Server 中执行IIF 的方式。所以我想我可以使用类似的东西:

Select IIF(SUBSTRING(a.Code,1,8)='APP VARY','C','B') as Value1

这看起来对吗?

有人知道我如何在 SQL Server 中实现同样的功能吗?

【问题讨论】:

  • PL/SQL 是编程语言,它没有decode
  • @WilliamRobertson - 我有一个 Oracle 查询,它已经解码并且运行没有问题。完全相同的格式
  • 没错,Oracle SQL 有decode
  • @WilliamRobertson :) 99% 的时间我都在 SSMS 中
  • 为什么不直接使用CASE 语句?

标签: sql-server tsql database-migration


【解决方案1】:

如 cmets 中所述,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

【讨论】:

    猜你喜欢
    • 2016-07-29
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多