Casting COGNOS 11通过cast连接字符长度

Casting COGNOS 11通过cast连接字符长度,casting,varchar,cognos,Casting,Varchar,Cognos,也许很简单,但我现在脑子里满是数字。我正在使用Cognos11,并试图使数据项显示字符长度为'4',即0014,而不仅仅是14。我可以在“报告属性”中的“编辑”中执行此操作,但我尝试执行一个串联字符串,它会一直恢复为14 我一直在尝试将([Demand No],varchar(4))转换为表达式定义(显示为“No error”),但它仍然在报告中不断删除前导的00 迄今为止,我的完整连接字符串[Unit ID]| | to_char(强制转换([Demand Date],Date),'ddmmy

也许很简单,但我现在脑子里满是数字。我正在使用Cognos11,并试图使数据项显示字符长度为'4',即0014,而不仅仅是14。我可以在“报告属性”中的“编辑”中执行此操作,但我尝试执行一个串联字符串,它会一直恢复为14

我一直在尝试将([Demand No],varchar(4))转换为表达式定义(显示为“No error”),但它仍然在报告中不断删除前导的00


迄今为止,我的完整连接字符串[Unit ID]| | to_char(强制转换([Demand Date],Date),'ddmmyyyy')| |强制转换([Demand No],varchar(4))。这将生成xxxxxx ddmmyyyyy0000,但仅当最后四个字符为0000时才生成,但如果删除前导的0,则看起来像xxxxxx ddmmyyyyy00。

您可以尝试lpad(cast([Demand No],varchar(4)),2,'0')

不优雅,但它使用通用的Cognos函数:

substring('0000', 1, 4 - char_length(cast([Demand No], varchar(4)))) || cast([Demand No], varchar(4))

lpad
是Cognos函数,还是需要将包配置为包含Informix或Oracle的函数?我使用SQL Server。在使用GO Sales(query)包的报告中使用
lpad
返回
com.microsoft.sqlserver.jdbc.SQLServerException:“lpad”不是可识别的内置函数名。
因此,很明显,Cognos并没有将
lpad
转换成SQL Server可以理解的内容。最初的帖子让我假设是Oracle,您需要检查所使用的数据库类型的特定于供应商的功能,以查看可用的功能。对于MSSQL,您将使用right和left函数。下面的链接提供了Dougp评论的一些很好的示例,可能您需要将包配置为包含SQL本机函数,以便可以使用LPAD()。。。或者只使用Cognos本机理解的函数,这样代码就可以跨RDBMS移植。事实上,如果您尝试对SQL Server使用LPAD,无论包中包含哪个供应商函数集,都会收到一条错误消息。Cognos根本不知道如何将LPAD转换成SQLServer能够理解的东西。除了Informix和Oracle之外,我假设在使用其他RDBMS时也是这样。您使用的是什么RDBMS?好的,我们使用lpad(cast([Demand No],varchar(4)),2,'0'),将2改为4。谢谢你的帮助,非常感谢。