【问题标题】:Shorter alternative to CASE expression WHEN?CASE 表达式 WHEN 的更短替代方案?
【发布时间】:2019-04-08 15:53:38
【问题描述】:

我有一个 SQL 表达式来将一些数据从一种格式映射到另一种格式:

CASE field
WHEN 'AU' THEN '036'
WHEN 'AT' THEN '040'
WHEN 'BE' THEN '056'
-- and so on
END

不幸的是,我需要将此表达式放入有长度限制的文本框(NetSuite 公式字段)中,并且我拥有的选项数量不适合。在 Oracle 中是否有比 CASE 表达式更简洁的替代方法,以便我可以使用更少的字符来编写它?

【问题讨论】:

  • 将其写为decode 可能有效。但这似乎需要某种形式的翻译表,而不是很长的decode 声明。
  • @JustinCave 我同意,但不幸的是,NetSuite 没有办法在公式中加入表格......系统试图隐藏数据库,这对于我们这些使用过的人来说非常烦人到 SQL。
  • @Wolfgang - 您可以通过连接添加一个执行翻译的视图;而是查询该视图?
  • 难道也没有办法调用查询翻译表的函数吗?
  • @AlexPoole 它也不授予对底层数据库的任何访问权限来创建视图。

标签: sql oracle case netsuite


【解决方案1】:

是的,使用DECODE() function

DECODE(field,
'AU', '036',
'AT', '040',
'BE', '056'
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 2012-09-20
    • 2021-03-26
    • 2016-01-13
    相关资源
    最近更新 更多