表A
Id varchar(30)
我试图重新创建一个逻辑,我必须使用9位数字ID而不管Id字段值的实际长度。
因此,例如,如果Id的长度为6,则我需要留下具有3个前导零的焊盘。实际长度可以是1到9之间的任何值。
如何在Teradata SQL中实现此功能?
答案 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)