sas - 从 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
你能温柔地启发我吗?提前致谢
解决方案
您必须应用 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))
推荐阅读
- php - gettext() 仅翻译 en_US
- javascript - 从 mongoose.find() 创建对象集
- html - 我想使用 GitHub 在实时网站上上传用 HTML 编写的代码
- perl - 如何将字符串转换为方程并在 Perl 中求解?
- java - 使用 Javamail 发送带有附件的邮件时发现 FileNotFound
- javascript - 电子窗口不会最小化或关闭
- python - 无法导入 pyLDAvis - ModuleNotFoundError:没有名为“_contextvars”的模块
- java - 将 unicode 字符转换为 int 会给出不正确的代码
- gcc - 如何避免 gcc 在编译后生成额外的代码?
- java - 没有可用连接时的 HikariCP 行为