CASE 中的 Cognos CAST
Cognos CAST within a CASE
我以为我会做一些简单的事情,但它给了我错误。我正在尝试将我们的 order# 与我可以毫无问题地使用 CAST 语句的订单后缀结合起来。我需要结果为 order#-## (123456-01)。当有超过九个版本并且我得到 123456-010 时会出现问题,因为我在我的组合中添加了一个“-0”。我已经试过了,但它给了我解析错误:
CASE WHEN [Order Suffix] > 9
THEN CAST (([Order #],varchar(7)) + '-' + CAST ([Order Suffix],varchar(2))
ELSE CAST (([Order #],varchar(7)) + '-0' + CAST ([Order Suffix],varchar(2))
END
我做错了什么,有没有更好的方法来完成这个?提前致谢。
CAST()
使用语法 as <type>
基本上是所有数据库(这是一个标准函数。
也许这会如你所愿:
(CAST(([Order #] as varchar(7)) +
(CASE WHEN [Order Suffix] <= 9 THEN '-0' ELSE '-' END) +
CAST([Order Suffix] as varchar(2))
)
请注意,这会分解出两个表达式中的公共代码。我认为这有助于提高可维护性。
我以为我会做一些简单的事情,但它给了我错误。我正在尝试将我们的 order# 与我可以毫无问题地使用 CAST 语句的订单后缀结合起来。我需要结果为 order#-## (123456-01)。当有超过九个版本并且我得到 123456-010 时会出现问题,因为我在我的组合中添加了一个“-0”。我已经试过了,但它给了我解析错误:
CASE WHEN [Order Suffix] > 9
THEN CAST (([Order #],varchar(7)) + '-' + CAST ([Order Suffix],varchar(2))
ELSE CAST (([Order #],varchar(7)) + '-0' + CAST ([Order Suffix],varchar(2))
END
我做错了什么,有没有更好的方法来完成这个?提前致谢。
CAST()
使用语法 as <type>
基本上是所有数据库(这是一个标准函数。
也许这会如你所愿:
(CAST(([Order #] as varchar(7)) +
(CASE WHEN [Order Suffix] <= 9 THEN '-0' ELSE '-' END) +
CAST([Order Suffix] as varchar(2))
)
请注意,这会分解出两个表达式中的公共代码。我认为这有助于提高可维护性。