表A
Id varchar(30)
我正在尝试重新创建一个逻辑,我必须使用9位数字ID而不管Id字段的值的实际长度.
因此,例如,如果Id的长度为6,我需要使用3个前导零左键.实际长度可以是1到9之间的任何长度.
有任何想法如何在Teradata SQL中实现这一点?
dno*_*eth 14
如果实际长度为1到9个字符,为什么列定义为VarCar(30)?
如果它是一个数字列,那将很容易:
CAST(CAST(numeric_col AS FORMAT '9(9)') AS CHAR(9))
Run Code Online (Sandbox Code Playgroud)
对于字符串,没有像这样的FORMAT,但根据您的发布,您可能具有LPAD函数:
LPAD(string_col, 9, '0')
Run Code Online (Sandbox Code Playgroud)
否则它是:
SUBSTRING('000000000' FROM CHAR_LENGTH(string_col)+1) || string_col,
Run Code Online (Sandbox Code Playgroud)
如果超过九个字符,之前的所有计算都将返回它们.
如果要截断(或CHAR而不是VARCHAR结果),则必须添加final CAST AS CHAR(9)
最后,如果您可能想要使用前导或尾随空白 TRIM(string_col)
| 归档时间: |
|
| 查看次数: |
40995 次 |
| 最近记录: |