zero padding in teradata sql

Tabela A
Id varchar (30)

Estou a tentar recriar uma lógica onde tenho de usar identificações de 9 dígitos independentemente do comprimento real do valor do campo Id.
Por exemplo, se a identificação for do comprimento 6, vou precisar de sair com 3 zeros principais. O comprimento real pode ser qualquer coisa que varie de 1 a 9.

alguma ideia de como implementar isto na Teradata SQL?

Author: user3634687, 2014-05-14

1 answers

Se o comprimento real é de 1 a 9 caracteres, porque é que a coluna é definida como VarCar(30)?

Se fosse uma coluna numérica seria fácil:

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

Para as cadeias de caracteres não existe um formato como este, mas dependendo da sua libertação poderá ter uma função LPAD:

LPAD(string_col, 9, '0')
Caso contrário, é:
SUBSTRING('000000000' FROM CHAR_LENGTH(string_col)+1) || string_col,

Se houver mais de nove caracteres, todos os cálculos anteriores Irão devolvê-los.

Se quiser truncar (ou um CHAR em vez de um resultado VARCHAR) tem de adicionar uma final CAST AS CHAR(9)

E, finalmente, se houver espaços iniciais ou finais, talvez queira usar TRIM(string_col)
 9
Author: dnoeth, 2014-05-14 06:15:13