Par rapport à dire:
REPLICATE(@padchar, @len - LEN(@str)) + @str
Par rapport à dire:
REPLICATE(@padchar, @len - LEN(@str)) + @str
C'est simplement une utilisation inefficace de SQL, peu importe comment vous le faites.
peut-être quelque chose comme
right('XXXXXXXXXXXX'+ rtrim(@str), @n)
où X est votre caractère de remplissage et @n est le nombre de caractères dans la chaîne résultante (en supposant que vous avez besoin du remplissage parce que vous avez une longueur fixe).
Mais comme je l'ai dit, vous devriez vraiment éviter de le faire dans votre base de données.
Peut-être un plus de tuer j'ai ces UDF pour tamponner à gauche et à droite
ALTER Function [dbo].[fsPadLeft](@var varchar(200),@padChar char(1)='0',@len int)
returns varchar(300)
as
Begin
return replicate(@PadChar,@len-Len(@var))+@var
end
et à droite
ALTER function [dbo].[fsPadRight](@var varchar(200),@padchar char(1)='0', @len int) returns varchar(201) as
Begin
--select @padChar=' ',@len=200,@var='hello'
return @var+replicate(@PadChar,@len-Len(@var))
end
Je ne suis pas sûr que la méthode que vous fournissez soit vraiment inefficace, mais d'une manière alternative, tant qu'elle ne doit pas être flexible dans la longueur ou le remplissage, serait (en supposant que vous voulez le remplir avec " 0 "à 10 caractères:
DECLARE
@pad_characters VARCHAR(10)
SET @pad_characters = '0000000000'
SELECT RIGHT(@pad_characters + @str, 10)
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.