Nella maggior parte dei linguaggi di programmazione sono presenti le funzioni PadLeft e PadRight, molto utili quando si devono generare stringhe di lunghezza fissa con i valori allineati a destra o sinistra e con i bytes restanti riempiti con un carattere di default.
Per capire di cosa sto parlando si pensi di voler formattare i valori: 12, 34 e 123 utilizzando una stringa di 5 caratteri.
I valori che vogliamo ottenere sono quindi: 00012, 00034, 00123
Mentre nella maggior parte dei linguaggi queste funzioni sono presenti, su T-SQL di SQL Server non esistono quindi dobbiamo ingegnarci.
La mia soluzione è una funzione che chiamerò PadLeft e che, una volta eseguita sarà aggiunta alle Scalar-valued Functions del nostro database SQL Server.
Funzione PadLeft
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =======================================================
-- Author: Luigi Cristaldi di www.iprogrammatori.it
-- Description: Funzione PadLeft
-- =======================================================
CREATE FUNCTION [dbo].[PadLeft]
(
@text varchar(max),
@paddingChar char(1),
@stringLenght int
)
RETURNS varchar(max)
AS
BEGIN
declare @returnValue varchar(max)
SELECT @returnValue = ISNULL(REPLICATE(@paddingChar, @stringLenght - len(ISNULL(@text ,0))), '') + @text
RETURN @returnValue
END
GO
Esempi di utilizzo
Query SQL: select dbo.PadLeft(12,0,5)
Risultato: 00012
Query SQL: select dbo.PadLeft('B1',0,6)
Risultato: 00000B1