zéro de remplissage dans teradata sql
Table
Id de type varchar(30)
Je suis en train de re-créer une logique où je dois utiliser à 9 chiffres Id indépendamment de la longueur réelle de la Valeur du champ Id.
Ainsi, par exemple, si l'Id est de longueur 6, je vais avoir besoin de garniture gauche avec 3 zéros. La longueur réelle peut être quelque chose allant de 1 à 9.
Toutes les idées sur la façon de mettre en œuvre cette Teradata SQL?
OriginalL'auteur user3634687 | 2014-05-14
Vous devez vous connecter pour publier un commentaire.
Si la longueur réelle est de 1 à 9 caractères est pourquoi la colonne définie comme VarCar(30)?
Si c'était une colonne numérique, il serait facile:
Pour les chaînes il n'y a pas de FORMAT comme ça, mais en fonction de votre version, vous pouvez avoir un LPAD fonction:
Sinon c'est:
Si il y a plus de neuf personnages, tous les calculs précédents ne seront pas retournés.
Si vous souhaitez tronquer (ou un CHAR au lieu d'un VARCHAR résultat), vous devez ajouter une dernière
CAST AS CHAR(9)
Et enfin, si il y a les principaux ou les espaces à droite, vous pourriez vouloir utiliser
TRIM(string_col)
Pouvez-vous expliquer la syntaxe de l'
AS FORMAT '9(9)'
?C'est Cobol-style,
9
moyens d'inclure les zéros à gauche et(9)
répète le précédent caractère de mise en forme 9 fois, c'est donc le même que999999999
. Voir info.teradata.com/htmlpubs/DB_TTU_14_00/index.html#page/...OriginalL'auteur dnoeth