Oracle SQL按三元运算排序

约翰·亨克尔

我正在尝试对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);

并说“缺少右括号”

戈登·利诺夫

使用case表达式:

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章