CASE 表达式 WHEN 的更短替代方案?
Posted
技术标签:
【中文标题】CASE 表达式 WHEN 的更短替代方案?【英文标题】:Shorter alternative to CASE expression 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 它也不授予对底层数据库的任何访问权限来创建视图。
【参考方案1】:
是的,使用DECODE()
function:
DECODE(field,
'AU', '036',
'AT', '040',
'BE', '056'
)
【讨论】:
以上是关于CASE 表达式 WHEN 的更短替代方案?的主要内容,如果未能解决你的问题,请参考以下文章