首页 > 解决方案 > 从 SAS 到 TERADATA 的字符转换

问题描述

我最近开始了一份新工作,我正在使用我不太熟悉的工具。所以我想知道 StackOverFlow 家族是否可以帮助我。

我在 SAS 中有这种串联,但我无法在 TERADATA 上对其进行排序

t1.COD_CZ||PUT(INPUT(t1.CODTC,5.),z4.)||PUT(t1.PROGOPE,z8.) as CODIGO_MCT

我写过这样的东西,但是字符串的长度与 sas 中的结果不协调。

t1.COD_CZ|| cast(cast(t1.CODTC as int) as char(4))|| cast(t1.PROGOPE as char(8)) as CODIGO_MCT

你能温柔地启发我吗?提前致谢

标签: sasteradata

解决方案


您必须应用 FORMAT 以获得前导零(连接修剪尾随空格):

t1.COD_CZ||Cast(t1.CODTC AS FORMAT '9(4)')||Cast(t1.PROGOPE AS FORMAT '9(8)')

结果具有固定长度,但它仍然是 VarChar(17)。如果您需要固定长度,例如用于导出:

CAST(t1.COD_CZ||Cast(t1.CODTC AS FORMAT '9(4)')||Cast(t1.PROGOPE AS FORMAT '9(8)') AS CHAR(17))

推荐阅读