Discussione:
Numeri e virgole
(troppo vecchio per rispondere)
Daniele
2005-08-24 10:04:02 UTC
Permalink
Ciao a tutti,

ho un dato di tipo int e debbo trasformarlo mettendo la virgola.
esempio.

select amount from tabella:
risultati

1234
6378
3840

Io vorrei che fossero estratti con la virgola in questa maniera:
12,34
63,78
38,40

Che tipo di select debbo fare?
Grazie in anticipo.
Albe V°
2005-08-24 10:20:51 UTC
Permalink
Post by Daniele
Ciao a tutti,
ho un dato di tipo int e debbo trasformarlo mettendo la virgola.
esempio.
risultati
1234
6378
3840
12,34
63,78
38,40
Che tipo di select debbo fare?
Se per 'virgola' intendi il separatore decimale, puoi fare:
Select Cast(Amount as numeric(18,2)) / 100 as Amount
From Tabella

Se per virgola intendevi proprio la virgola, devi aggiungere un Cast as
Char e un Replace del punto con la virgola.

Ciao

Alberto
--
"Se viriamo, viriamo viriamo viriamo;
Se andiamo dritti, viriamo"
(Cit. "il tattico")
Daniele
2005-08-24 10:33:02 UTC
Permalink
Post by Albe V°
Post by Daniele
Ciao a tutti,
ho un dato di tipo int e debbo trasformarlo mettendo la virgola.
esempio.
risultati
1234
6378
3840
12,34
63,78
38,40
Che tipo di select debbo fare?
Select Cast(Amount as numeric(18,2)) / 100 as Amount
From Tabella
Se per virgola intendevi proprio la virgola, devi aggiungere un Cast as
Char e un Replace del punto con la virgola.
Ciao
Alberto
--
"Se viriamo, viriamo viriamo viriamo;
Se andiamo dritti, viriamo"
(Cit. "il tattico")
Perfetto funziona,una sola cosa adesso i dati mi vengono come dico io ma con
tanti 0 alla fine es 12.890000 come faccio ad eliminarli?
Lorenzo Benaglia
2005-08-24 10:41:21 UTC
Permalink
Post by Daniele
Perfetto funziona,una sola cosa adesso i dati mi vengono come dico io
ma con tanti 0 alla fine es 12.890000 come faccio ad eliminarli?
Ciao Daniele,

casta il risultato come ti ha indicato Andrea nel post sotto... :-)

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Daniele
2005-08-24 10:55:03 UTC
Permalink
Post by Lorenzo Benaglia
Post by Daniele
Perfetto funziona,una sola cosa adesso i dati mi vengono come dico io
ma con tanti 0 alla fine es 12.890000 come faccio ad eliminarli?
Ciao Daniele,
casta il risultato come ti ha indicato Andrea nel post sotto... :-)
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Ecco l'errore che mi riporta:

Arithmetic overflow error converting numeric to data type numeric.
Daniele
2005-08-24 11:05:08 UTC
Permalink
Post by Lorenzo Benaglia
Post by Daniele
Perfetto funziona,una sola cosa adesso i dati mi vengono come dico io
ma con tanti 0 alla fine es 12.890000 come faccio ad eliminarli?
Ciao Daniele,
casta il risultato come ti ha indicato Andrea nel post sotto... :-)
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Ok sono riuscito.
Una sola domanda che riguarda la sintassi:
per CONVERT( numeric ( 10,2 )
il 10,2 cosa vuole dire?
Lorenzo Benaglia
2005-08-24 11:56:08 UTC
Permalink
Post by Daniele
per CONVERT( numeric ( 10,2 )
il 10,2 cosa vuole dire?
Come avrai capito la funzione CONVERT serve a convertire il data type di una
espressione.
Il data type numeric (sinonimo di decimal) è un data type numerico a
precisione fissa (quindi con un numero definito di cifre decimali dopo la
virgola).
Il primo argomento è la Precision, ovvero il numero massimo di cifre
numeriche che possono essere memorizzate sia a destra che a sinistra del
punto decimale; il secondo è lo Scale, ovvero il numero massimo di cifre
numeriche che possono essere memorizzate alla destra del punto decimale.
Quindi una precision di 10 con scale di 2 indica che possono essere
memorizzate al massimo 8 cifre intere e due decimali.

Per maggiori info leggi i seguenti paragrafi sui Books Online:

"CAST and CONVERT"
http://msdn.microsoft.com/library/en-us/tsqlref/ts_ca-co_2f3o.asp

"decimal and numeric"
http://msdn.microsoft.com/library/en-us/tsqlref/ts_de-dz_3grn.asp

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Andrea Benedetti
2005-08-24 10:19:50 UTC
Permalink
Salve Daniele,
Post by Daniele
Ciao a tutti,
ho un dato di tipo int e debbo trasformarlo mettendo la virgola.
esempio.
risultati
1234
6378
3840
12,34
63,78
38,40
Che tipo di select debbo fare?
Se il tuo campo contiene un intero di cui le ultime due cifre corrispondono
a due cifre decimali potresti eseguire una select come questa:

declare @valore int
set @valore = 2849

select left (@valore,len(@valore)-2) + ',' + right ( @valore, 2)

Fermo restando il fatto che per elaborazioni del genere preferirei delegare
al client ...

Una domanda (se posso): ma utilizzare un campo decimal? ;-)))
Post by Daniele
Grazie in anticipo.
Andrea
Daniele
2005-08-24 10:36:02 UTC
Permalink
Post by Andrea Benedetti
Salve Daniele,
Post by Daniele
Ciao a tutti,
ho un dato di tipo int e debbo trasformarlo mettendo la virgola.
esempio.
risultati
1234
6378
3840
12,34
63,78
38,40
Che tipo di select debbo fare?
Se il tuo campo contiene un intero di cui le ultime due cifre corrispondono
Fermo restando il fatto che per elaborazioni del genere preferirei delegare
al client ...
Una domanda (se posso): ma utilizzare un campo decimal? ;-)))
Post by Daniele
Grazie in anticipo.
Andrea
Infatti anche io userei il campo decimal ma essendo una select da una table
che non gestisco io posso solo adeguarmi. :- )
Cmq funziona il suggerimento dell'altro post.
Grazie lo stesso.
Andrea Montanari
2005-08-24 10:24:08 UTC
Permalink
salve,
Post by Daniele
Ciao a tutti,
ho un dato di tipo int e debbo trasformarlo mettendo la virgola.
esempio.
12,34
63,78
38,40
devi provvedere ad una conversione esplicita del valore, dividerlo per 100,
e castare nuovamente il risultato nel tipo desiderato specificandone
precisione e scala, similarmente a
SET NOCOUNT ON
DECLARE @t TABLE (
ID int NOT NULL ,
num int NOT NULL
)
INSERT INTO @t VALUES ( 1 , 1234 )
INSERT INTO @t VALUES ( 2 , 2345 )
INSERT INTO @t VALUES ( 3 , 3456 )
INSERT INTO @t VALUES ( 4 , 4567 )

SELECT CONVERT( decimal ( 6,2 ) , CONVERT( decimal ( 6,2 ), t.num ) /100 )
AS [risultato]
FROM @t t
--<---------
risultato
---------
12.34
23.45
34.56
45.67

saluti
--
Andrea Montanari (Microsoft MVP - SQL Server)
http://www.asql.biz/DbaMgr.shtm http://italy.mvps.org
DbaMgr2k ver 0.15.0 - DbaMgr ver 0.60.0
(my vb6+sql-dmo little try to provide MS MSDE 1.0 and MSDE 2000 a visual
interface)
--------- remove DMO to reply
Loading...