Teradata does not come with an LPAD() or RPAD() function. If you can create a UDF for them, that would be best, but if you can't, here are some workarounds.
RPAD a string with spaces
-- replace 10 in char(10) below with desired column length -- single ticks put around result to show spaces were actually added to right select 'abc' as "SampleString", '''' || cast(SampleString as char(10)) || '''' "rpad_spaces";
RPAD a string with any character
-- make string of characters (in this example '0000') to match desired length -- leading space in column is preserved select ' 1' AS "SampleString", SampleString || Substring('0000' From 1 For Chars(SampleString)) AS "rpad_zero"; -- same as above, but using ANSI SUBSTR select ' 1' AS "SampleString", SampleString || SUBSTR('0000',Chars(SampleString)) AS "rpad_zero";
LPAD a string with any character
-- replace 0 with desired character -- make string of characters (in this example '0000') to match desired length -- leading space in column is preserved select ' 1' AS "SampleString", Substring('0000' From 1 For Chars(SampleString)) || SampleString "lpad_zero"; -- same as above, but using ANSI SUBSTR SELECT '19' as "SampleText", SUBSTR('00000'||SampleText,CHARACTERS(SampleText)+1) "LPAD(SampleText,5,'0')"; -- Showing how trailing spaces from a CHAR column can be dropped select '0000123 ' as "SampleText", CAST(CAST(SampleText AS integer FORMAT '-9(10)') AS CHAR(10)) "LPAD(SampleText,10,'0')";
No comments:
Post a Comment