Discussione:
Come completare un campo con caratteri
(troppo vecchio per rispondere)
Gaetano
2007-10-31 07:15:01 UTC
Permalink
Ciao a tutti,

so che è una domanda banale, ma non sono riuscito a trovare una soluzione.
Ho un campo numerico intero, esempio Field1; lo debbo trasformare in stringa
e riempirlo a sinistra con degli 0, facendo in modo che la lunghezza totale
risulti 10.
Provengo dalle esperienze Oracle e in Oracle avrei scritto così:

LPAD(TO_CHAR(Field1), 10, '0'))

ottenendo esattamente quanto mi serve e cioè se Field1 ad esempio vale 115,
avrei ottenuto:

0000000115

Posso ottenere la stessa cosa con SQL Server ? In che modo ?
So già che TO_CHAR equivale a STR, ma è il riempimento che mi crea problemi.

Grazie e ciao
--
Gaetano
VeroToad [MVP]
2007-10-31 07:41:48 UTC
Permalink
Post by Gaetano
Ciao a tutti,
so che è una domanda banale, ma non sono riuscito a trovare una soluzione.
Ho un campo numerico intero, esempio Field1; lo debbo trasformare in stringa
e riempirlo a sinistra con degli 0, facendo in modo che la lunghezza totale
risulti 10.
La mia "porcheria" di prima mattina :-)

DECLARE @Mynumber int
SET @Mynumber=115

DECLARE @N int
SET @N=10

SELECT REPLICATE('0',@N-LEN(CAST(@Mynumber AS
varchar(10))))+CAST(@Mynumber AS varchar(10))

Ma sono convinto che ci sia anche qualcosa di più semplice...
HTH
Ciao!
--
VeroToad, MVP Windows - Shell/User
My MVP Profile: http://mvp.support.microsoft.com/profile/Simone.Vigano
My Blog: http://blogs.dotnethell.it/VeroToad
Gaetano
2007-10-31 08:04:00 UTC
Permalink
Mannaggia, tutta questa roba per ottenere un semplice risultato come in Oracle.
Spero proprio che ci sia una soluzione più semplice.
Comunque grazie.
--
Gaetano
Post by VeroToad [MVP]
Post by Gaetano
Ciao a tutti,
so che è una domanda banale, ma non sono riuscito a trovare una soluzione.
Ho un campo numerico intero, esempio Field1; lo debbo trasformare in stringa
e riempirlo a sinistra con degli 0, facendo in modo che la lunghezza totale
risulti 10.
La mia "porcheria" di prima mattina :-)
Ma sono convinto che ci sia anche qualcosa di più semplice...
HTH
Ciao!
--
VeroToad, MVP Windows - Shell/User
My MVP Profile: http://mvp.support.microsoft.com/profile/Simone.Vigano
My Blog: http://blogs.dotnethell.it/VeroToad
VeroToad [MVP]
2007-10-31 08:06:15 UTC
Permalink
Post by Gaetano
Mannaggia, tutta questa roba per ottenere un semplice risultato come in
Oracle. Spero proprio che ci sia una soluzione più semplice.
Cvd la soluzione più semplice è arrivata :-)
--
VeroToad, MVP Windows - Shell/User
My MVP Profile: http://mvp.support.microsoft.com/profile/Simone.Vigano
My Blog: http://blogs.dotnethell.it/VeroToad
giorgio rancati
2007-10-31 07:48:30 UTC
Permalink
Post by Gaetano
Ciao a tutti,
so che è una domanda banale, ma non sono riuscito a trovare una soluzione.
Ho un campo numerico intero, esempio Field1; lo debbo trasformare in stringa
e riempirlo a sinistra con degli 0, facendo in modo che la lunghezza totale
risulti 10.
LPAD(TO_CHAR(Field1), 10, '0'))
ottenendo esattamente quanto mi serve e cioè se Field1 ad esempio vale 115,
0000000115
Posso ottenere la stessa cosa con SQL Server ? In che modo ?
So già che TO_CHAR equivale a STR, ma è il riempimento che mi crea problemi.
Ciao Gaetano,
puoi fare così
----
REPLACE(STR(Field1,10),' ','0')
----

Ciao
--
Giorgio Rancati
[Office Access MVP]
Gaetano
2007-10-31 10:18:00 UTC
Permalink
Ok, pensavo che ci fosse qualcosa di più semplice. Grazie mille.
--
Gaetano
Post by giorgio rancati
Post by Gaetano
Ciao a tutti,
so che è una domanda banale, ma non sono riuscito a trovare una soluzione.
Ho un campo numerico intero, esempio Field1; lo debbo trasformare in stringa
e riempirlo a sinistra con degli 0, facendo in modo che la lunghezza totale
risulti 10.
LPAD(TO_CHAR(Field1), 10, '0'))
ottenendo esattamente quanto mi serve e cioè se Field1 ad esempio vale 115,
0000000115
Posso ottenere la stessa cosa con SQL Server ? In che modo ?
So già che TO_CHAR equivale a STR, ma è il riempimento che mi crea problemi.
Ciao Gaetano,
puoi fare così
----
REPLACE(STR(Field1,10),' ','0')
----
Ciao
--
Giorgio Rancati
[Office Access MVP]
Marcello
2007-10-31 10:27:48 UTC
Permalink
Post by Gaetano
Ok, pensavo che ci fosse qualcosa di più semplice. Grazie mille.
Ciao Gaetano, ancora più semplice???!!!

al più puoi arrivare a un:

dbo.f(Filed1)

e definire una funzione f che fa quello che chiedi.

marc.
--
Marcello Poletti
Dingo&Epomops
http://www.dingoepomops.it
http://blogs.dotnethell.it/epomops/
giorgio rancati
2007-10-31 10:31:41 UTC
Permalink
Post by Gaetano
Ok, pensavo che ci fosse qualcosa di più semplice. Grazie mille.
umm.. tra
----
LPAD(TO_CHAR(Field1), 10, '0'))
----
e
----
REPLACE(STR(Field1,10),' ','0')
----
non vedo differenze che influiscono sulla semplicità.
:-)
--
Giorgio Rancati
[Office Access MVP]
Gaetano
2007-10-31 10:46:00 UTC
Permalink
Ragazzi,

avete frainteso la mia risposta. Volevo semplicemente dire che la soluzione
propostami con il REPLACE è ottima e che ero sicuro che ci fosse un modo
semplice per ottenere un buon risultato.

Spero che ora sia più chiaro il mio pensiero e mi scuso se ho dato
l'impressione di essere incontentabile.

Ciao a tutti e ancora grazie
--
Gaetano
Post by giorgio rancati
Post by Gaetano
Ciao a tutti,
so che è una domanda banale, ma non sono riuscito a trovare una soluzione.
Ho un campo numerico intero, esempio Field1; lo debbo trasformare in stringa
e riempirlo a sinistra con degli 0, facendo in modo che la lunghezza totale
risulti 10.
LPAD(TO_CHAR(Field1), 10, '0'))
ottenendo esattamente quanto mi serve e cioè se Field1 ad esempio vale 115,
0000000115
Posso ottenere la stessa cosa con SQL Server ? In che modo ?
So già che TO_CHAR equivale a STR, ma è il riempimento che mi crea problemi.
Ciao Gaetano,
puoi fare così
----
REPLACE(STR(Field1,10),' ','0')
----
Ciao
--
Giorgio Rancati
[Office Access MVP]
Continua a leggere su narkive:
Loading...