Disons que j'ai un int avec la valeur 1. Comment puis-je convertir cet int en une chaîne à zéro, comme 00000001
?
Réponses
Trop de publicités?Ce travail pour moi:
SELECT RIGHT('000' + CAST(Table.Field AS VARCHAR(3)),3) FROM Table
...
J'ai créé cette fonction utilisateur
Code T-SQL:
CREATE FUNCTION CIntToChar(@intVal Int, @intLen Int) RETURNS nvarchar(24) AS BEGIN
IF @intlen > 24
SET @intlen = 24
RETURN REPLICATE('0',@intLen-LEN(RTRIM(CONVERT(nvarchar(24),@intVal))))
+ CONVERT(nvarchar(24),@intVal) END
Exemple :
SELECT dbo.CIntToChar (867, 6) AS COD_ID
PRODUCTION
000867
Si j'essaye de remplir une longueur totale spécifique, j'utilise les fonctions REPLICATE et DATALENGTH, comme ceci:
DECLARE @INT INT
DECLARE @UNPADDED VARCHAR(3)
DECLARE @PADDED VARCHAR(3)
SET @INT = 2
SET @UNPADDED = CONVERT(VARCHAR(3),@INT)
SET @PADDED = REPLICATE('0', 3 - DATALENGTH(@UNPADDED)) + @UNPADDED
SELECT @INT, @UNPADDED, @PADDED
J'ai utilisé des variables ici pour plus de simplicité, mais vous voyez, vous pouvez spécifier la longueur finale de la chaîne totale et ne vous inquiétez pas de la taille de l'INT avec laquelle vous commencez tant que c'est <= la longueur finale de la chaîne.