【问题标题】:How do I translate SQL SERVER Query into Oracle SQL?如何将 SQL SERVER 查询转换为 Oracle SQL?
【发布时间】:2019-03-01 23:40:51
【问题描述】:

我正在尝试将下面的查询从 SQL Server 转换为 Oracle SQL。我不确定 关于预言机的 IFF 条件。

SELECT IIF(Grade<8, NULL,Name) As Name ,Grade,Marks 
FROM Grade,Students 
WHERE Marks>=Min_Mark and Marks<=Max_Mark 
ORDER BY Grade DESC, Name ASC;

【问题讨论】:

  • 你应该停止在 where 子句中使用那些古老的、过时的和脆弱的隐式连接,并切换到显式的 JOIN 运算符

标签: sql oracle database-migration


【解决方案1】:

你可以像下面这样尝试

SELECT case when Grade<8 then  NULL else Name end As Name ,Grade,Marks 
FROM Grade,Students 
WHERE Marks>=Min_Mark and Marks<=Max_Mark 
ORDER BY Grade DESC, Name ASC;

但我更喜欢像下面这样的显式加入

SELECT case when Grade<8 then  NULL else Name end As Name ,Grade,Marks 
    FROM Grade join Students 
    on  Grade.Marks>=Students.Min_Mark and
       Grade.Marks<=Students.Max_Mark 
    ORDER BY Grade DESC, Name ASC;

【讨论】:

  • 几乎每个人都同意第二个查询是最佳实践
  • 感谢您的回答。确实非常有益。
猜你喜欢
  • 2022-01-12
  • 1970-01-01
  • 2016-07-29
  • 1970-01-01
  • 2017-06-03
  • 2018-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多