【问题标题】:Oracle SQL sort by ternary operationOracle SQL 按三元运算排序
【发布时间】:2020-05-22 17:16:43
【问题描述】:

我正在尝试对 ORACLE SQL 中的记录进行排序,以便将包含短语“VENT”的所有字符串排序到顶部,而其他字符串按长度排序。

   Select D1.MENU_TEXT
   from IMPRESSIONS_DEF D1
   order by IFF(instr(D1.MENU_TEXT, 'VENT'),1, LENGTH(D1.MENU_TEXT));

我试过这个,但它失败了,“IFF”标识符无效。我也试过了

   Select D1.MENU_TEXT, iff(D1.MENU_TEXT like '%VENT%', 1, 200) as k
   from IMPRESSIONS_DEF D1
   order by k + Length(D1.Menu_Text);

它说“缺少右括号”

【问题讨论】:

    标签: sql oracle sorting


    【解决方案1】:

    使用case 表达式:

    ORDER BY (CASE WHEN MENU_TEXT LIKE '%VENT%' THEN 1 ELSE 2 END),
             LENGTH(D1.MENU_TEXT);
    

    CASE 是标准 SQL。 IIF() 是定制的 SQL,仅由少数数据库使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-09
      • 2021-09-05
      • 2019-08-30
      • 1970-01-01
      • 1970-01-01
      • 2010-11-29
      • 2013-05-04
      相关资源
      最近更新 更多