Je suis relativement nouveau dans PostgreSQL et je sais comment composer un nombre avec des zéros à gauche dans SQL Server, mais j'ai du mal à comprendre cela dans PostgreSQL.
J'ai une colonne de nombres où le nombre maximum de chiffres est 3 et le min est 1: si c'est un chiffre, il a deux zéros à gauche, et si c'est 2 chiffres, il y a 1, par exemple. 001, 058, 123.
Dans SQL Server, je peux utiliser les éléments suivants:
RIGHT('000' + cast([Column1] as varchar(3)), 3) as [Column2]
Cela n'existe pas dans PostgreSQL. Toute aide serait appréciée.
Vous pouvez utiliser les fonctions rpad
et lpad
pour insérer des nombres à droite ou à gauche, respectivement. Notez que cela ne fonctionne pas directement sur les nombres, vous devrez donc utiliser ::char
ou ::text
pour les lancer:
SELECT RPAD(numcol::text, 3, '0'), -- Zero-pads to the right up to the length of 3
LPAD(numcol::text, 3, '0'), -- Zero-pads to the left up to the length of 3
FROM my_table
La fonction to_char()
permet de formater des nombres:
select to_char(column_1, 'fm000') as column_2
from some_table;
Le préfixe fm
("mode de remplissage") évite les espaces de début dans le varchar résultant. Le 000
définit simplement le nombre de chiffres que vous souhaitez avoir.
psql (9.3.5) Tapez "aide" pour obtenir de l'aide. > valeurs (1), (11), (100) postgres (>) postgres-> select to_char (nr, 'fm000') postgres-> parmi sample_numbers; to_char --------- 001 011 100 (3 rangées) postgres =>
Pour plus de détails sur le format d'image, veuillez consulter le manuel:
http://www.postgresql.org/docs/current/static/functions-formatting.html
Aussi facile que
SELECT lpad(42::text, 4, '0')
Références:
sqlfiddle: http://sqlfiddle.com/#!15/d41d8/3665