[MySQL]Comando UPDATE e DATATYPE

mercoledì 14 novembre 2007 - 08.14

Hope Profilo | Junior Member

Salve ragazzi,piccolo problemino...
Ho una colonna con dei numeri alla quale vorrei aggiungere "GB" o "MB" in base alla dimensione dei numeri,si può con il comando UPDATE dirgli che se un valore supera tale cifra deve aggiungere GB e se è minore deve metterci MB?


Altra domanda:
Ho un datatype numerico,se lo metto come DECIMAL lui me l'arrotonda benissimo,ma se il campo è sia numerico che stringa mi va in errore (giustamente) con datatype DECIMAL,c' è un modo per far arrotondare un numero che abbia anche una stringa? (nel mio caso "GB" o "MB")

Grazie a tutti...

Saluti

lbenaglia Profilo | Guru

>Ho una colonna con dei numeri alla quale vorrei aggiungere "GB"
>o "MB" in base alla dimensione dei numeri,si può con il comando
>UPDATE dirgli che se un valore supera tale cifra deve aggiungere
>GB e se è minore deve metterci MB?

Ciao Hope,

se il datatype di quella colonna è numerico potrai ovviamente inserire solo numeri, pertanto non è possibile fare quello che chiedi.

>Ho un datatype numerico,se lo metto come DECIMAL lui me l'arrotonda
>benissimo,ma se il campo è sia numerico che stringa mi va in
>errore (giustamente) con datatype DECIMAL,c' è un modo per far
>arrotondare un numero che abbia anche una stringa? (nel mio caso
>"GB" o "MB")
Un data type non può essere "sia numerico che stringa", quindi tutto il discorso decade.
Quell'operazione falla lato client, oppure se per te è importante averla nel db aggiungi una nuova colonna char(2) che conterrà l'unità di misura.

>Grazie a tutti...
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Hope Profilo | Junior Member

Grazie,immaginavo questa risposta,ma un pò speravo nel mistero dell'informatica...
Proverò a fare come dici..anche se ormai la vedo dura...perchè quella colonna è già popolata con il valore numerico espresso in byte,a convertirlo con UPDATE va bene,ma poi il problema è sempre l'aggiunta di GB o MB...
Vi faccio sapere come è andata a finire...
grazie ancora...
buona giornata

Saluti

Hope Profilo | Junior Member

Allora ho modificato il campo in VARCHAR..ora perchè se eseguo questo comando UPDATE mi da errore?

UPDATE tabella
SET colonna1= colonna1 / 1024 \ 1024 \ 1024 + 1

Mi genera un'errore di sintassi...mentre così
funziona alla grande
UPDATE Tabella
SET colonna = colonna / 1073741824

Dove sbaglio?

grazie..

Saluti

lbenaglia Profilo | Guru

>Allora ho modificato il campo in VARCHAR..
Bruttissima scelta. Memorizzare numeri in colonne stringa potrebbe portare ad archiviare un sacco di "sporcizia". Inoltre perdi i vantaggi di storage e prestazionali relativi a questi data type.

> ora perchè se eseguo
>questo comando UPDATE mi da errore?
>
>UPDATE tabella
>SET colonna1= colonna1 / 1024 \ 1024 \ 1024 + 1
>
>Mi genera un'errore di sintassi...mentre così
>funziona alla grande
>UPDATE Tabella
>SET colonna = colonna / 1073741824

Ma tu i dati no li hai già espressi in MB/GB?!

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Hope Profilo | Junior Member

Avevo messo varchar credendo poi di poter aggiungere a mano MB o GB.
Si i valori l'avevo espressi in GB o MB ma non erano valori arrotondati,e quindi non mi andavano bene...
Volevo eseguire quella query per arrotondarli e poi aggiungere a mano GB o MB...

In questo post avevo chiesto come fare ( http://www.dotnethell.it/forum/messages.aspx?ThreadID=19377 ),e funziona lato VB quindi con le nuove informazioni è OK...ma con quelle vecchie (quelle già caricate nel DB)volevo fare una cosa simile ma con il comando UPDATE


ragazzi scusate per le domande sceme,non me ne vogliate,ma sto veramente agli inizi su un progetto che termina a breve

grazie ancora


Saluti
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5