从不正确连接的 Teradata 列中删除尾随句点
Removing a trailing period from improperly joined Teradata column
我有一个我继承的 Teradata table,但格式不正确。
ID
123456789.
234567890.
我试过:
TRIM(new_card_srgt_id (FORMAT 'Z(17)9'))
但是我的 Teradata 版本出现了一个有趣的错误:
Format string has combination of numeric, character, and GRAPHIC values.
欢迎提出任何建议。
更新:使用 TRIM(ID 尾随 '.')的建议在我投射时导致数字溢出。任何其他修复方法。
解决方法:
cast(TRIM(从 ID 尾随 '.') as decimal(18,0))
当您在不指定格式的情况下将数据从十进制字段加载到字符字段时,teradata 会进行类型转换。它本质上添加了“。”尾随值。
如果 ID 字段是 char 并且它已经包含“.”并且您想将其提取为不带“。”的十进制那么语法如下
SELECT cast(id as decimal(15,0)) form table;
如果 ID 字段是十进制并且您想将其提取为不带“.”的字符那么语法如下
SELECT TRIM(ID (FORMAT 'ZZZZZZZZZZZZZ9')) from table;
我有一个我继承的 Teradata table,但格式不正确。
ID
123456789.
234567890.
我试过:
TRIM(new_card_srgt_id (FORMAT 'Z(17)9'))
但是我的 Teradata 版本出现了一个有趣的错误:
Format string has combination of numeric, character, and GRAPHIC values.
欢迎提出任何建议。
更新:使用 TRIM(ID 尾随 '.')的建议在我投射时导致数字溢出。任何其他修复方法。
解决方法:
cast(TRIM(从 ID 尾随 '.') as decimal(18,0))
当您在不指定格式的情况下将数据从十进制字段加载到字符字段时,teradata 会进行类型转换。它本质上添加了“。”尾随值。
如果 ID 字段是 char 并且它已经包含“.”并且您想将其提取为不带“。”的十进制那么语法如下
SELECT cast(id as decimal(15,0)) form table;
如果 ID 字段是十进制并且您想将其提取为不带“.”的字符那么语法如下
SELECT TRIM(ID (FORMAT 'ZZZZZZZZZZZZZ9')) from table;