具有不同长度的 Cognos Substr

Cognos Substr with varying lengths

我有一个 ID 字段,它只是数字,但 ID 的长度各不相同。如果数字是 16 个字符长,那么我需要显示 'x' + ID 的最后 4 个字符,如果不是,则只显示 ID 的最后 10 个字符。

如果您的 ID 字段已经是字符串:

CASE character_length([ID]) 
WHEN 16 THEN 'x' || substring([ID],character_length([ID]) - 3) 
ELSE substring([ID],character_length([ID]) - 9) 
END

如果您的 ID 存储为整数,我建议创建一个将其转换为 varchar 的新数据项(比如命名为 'ID String'):

CAST([ID],VARCHAR(16))

然后在第一个表达式中替换新值:

CASE character_length([ID String]) 
WHEN 16 THEN 'x' || substring([ID String],character_length([ID String]) - 3) 
ELSE substring([ID String],character_length([ID String]) - 9) 
END