sql - CASE 中的 Cognos CAST
问题描述
我以为我会做一些简单的事情,但它给了我错误。我正在尝试将我们的订单# 与订单后缀结合起来,我可以毫无问题地使用 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))
)
请注意,这会排除两个表达式中的公共代码。我认为这有助于可维护性。
推荐阅读
- angular - 招摇“路径'../api/'上的方法'get'被多次注册”错误
- java - 如何在 inria Spoon 中向 CtAnnotation 添加多个值
- php - 如何使用谷歌矩阵 api 显示如果用户 lat long 距离特定位置 lat long 200 米以外的消息
- android - 找不到参数的方法 jackOptions(),为什么?
- java - 如何从库模块类启动另一个应用程序?
- javascript - Firestore arrayunion 提供任何回调?
- excel - 获得#REF!vlookup 上的错误 - 3 个不同的版本
- c - 比较 c 中的 int 和 char,使用 if 条件
- android - 如何为此网络服务创建 kotlin 数据类?
- xamarin.forms - WidthRequest 是什么意思?