teradata sql中的零填充

时间:2014-05-14 01:04:51

标签: sql teradata

表A
Id varchar(30)

我试图重新创建一个逻辑,我必须使用9位数字ID而不管Id字段值的实际长度。
因此,例如,如果Id的长度为6,则我需要留下具有3个前导零的焊盘。实际长度可以是1到9之间的任何值。

如何在Teradata SQL中实现此功能?

1 个答案:

答案 0 :(得分:11)

如果实际长度为1到9个字符,为什么列定义为VarCar(30)?

如果它是一个数字列,那将很容易:

CAST(CAST(numeric_col AS FORMAT '9(9)') AS CHAR(9))

对于字符串,没有那样的格式,但根据你的发布,你可能有一个LPAD函数:

LPAD(string_col, 9, '0')

否则它是:

SUBSTRING('000000000' FROM CHAR_LENGTH(string_col)+1) || string_col,

如果超过九个字符,之前的所有计算都将返回它们。

如果要截断(或CHAR而不是VARCHAR结果),则必须添加最终CAST AS CHAR(9)

最后,如果有前导或尾随空白,您可能想要使用TRIM(string_col)