Teradata TPT中如何转义单引号或去除字段尾随句点?
Teradata TPT中TRIM尾随句点的单引号问题解决办法
嗨,我来帮你搞定这个TRIM语句里的单引号冲突问题,这里有两种靠谱的解决方案:
1. 转义单引号(传统方法)
在TPT的SelectStmt这种用单引号包裹的VARCHAR属性里,内部的单引号需要用两个连续单引号来转义,这样Teradata才能正确识别。
把你原TRIM语句里的'.'转义后,写法如下:
TRIM(trailing '' from EMP_ID)
对应的完整SelectStmt修改后片段:
VARCHAR SelectStmt = ' select TOP 100 trim ( cast ( ( trim(cast(cast(TRIM(trailing '' from EMP_ID) AS CHAR(100))) ) as CHAR(10000)) ) from DP_TRM.V_ANSWER_FACT ; ',
2. 用CHR函数避免单引号(更简洁的方法)
句点(.)的ASCII码是46,Teradata的CHR()函数可以通过ASCII码生成对应字符,用它来替代'.'就完全不用处理单引号转义了,代码也更清爽。
修改后的TRIM语句:
TRIM(trailing CHR(46) from EMP_ID)
对应的SelectStmt片段:
VARCHAR SelectStmt = ' select TOP 100 trim ( cast ( ( trim(cast(cast(TRIM(trailing CHR(46) from EMP_ID) AS CHAR(100))) ) as CHAR(10000)) ) from DP_TRM.V_ANSWER_FACT ; ',
小建议:简化冗余的嵌套写法
你当前的TRIM和CAST嵌套有点复杂,其实可以简化成这样,功能完全一致,但可读性更好:
TRIM(CAST(TRIM(trailing CHR(46) from EMP_ID) AS CHAR(10000)))
内容的提问来源于stack exchange,提问作者M80
相关产品推荐
相关产品推荐

