>in sql server esiste una funzione per formattare una stringa
>cioè:
>
>se faccio una select campo1 from ...
>
>nel campo1 ho il valore 123
>
>esiste una funzione che mi ritorni 00123 cioè il valore formattato
>a 5 caratteri ed aggiunga 0 se mancano?
>
>una spece di campo1.tostring("00000") di vb.net
Ciao gab82,
SQL Server mette a disposizione la funzione CONVERT in grado di eseguire tutta una serie di formattazioni sul formato delle date, delle valute, ecc. ma in questo caso puoi facilmente raggiungere il tuo scopo con un minimo di ingegno: è sufficiente concatenare a sinistra del numero una stringa formata da n zeri, dove n equivale al numero di cifre che intendi ottenere e prendere gli n caratteri di destra:
DECLARE @numero int;
SET @numero = 123;
SELECT RIGHT('00000' + CAST(@numero AS varchar), 5) AS NumeroFormattato;
GO
/* Output:
NumeroFormattato
----------------
00123
(1 row(s) affected)
*/
Volendo puoi tranquillamente scrivere una funzione scalare che accetti in input il numero da formattare ed il numero di cifre che vuoi ottenere:
USE tempdb;
GO
CREATE FUNCTION dbo.ufn_FormatNumber(
@Number int,
@Digits int
)
RETURNS varchar(max)
BEGIN
RETURN RIGHT(REPLICATE('0', @Digits) +
CAST(@Number AS varchar), @Digits)
END;
GO
SELECT dbo.ufn_FormatNumber(123, 5) AS NumeroFormattato;
GO
/* Output:
NumeroFormattato
----------------
00123
(1 row(s) affected)
*/
DROP FUNCTION dbo.ufn_FormatNumber;
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org