Salutare ! Am si eu o probl. ! Doresc sa fac conversia unei intregi coloane de tip nvarchar() in float ! Mai exact :: am inregistrari de tipul "0,001999" in coloana respectiva si doresc sa aflu Min de aceste valori ! In oracle erau functii de genul TO_DATE,TO_NUMBER , iar in sql am gasit doar cast si convert dar exec. CONVERT ( coloana , float ) nu merge .... se aplica doar ptr 1 singura valoare ! idei ?
Merci !
Jourjaque:...iar in sql am gasit doar cast si convert dar exec. CONVERT ( coloana , float ) nu merge .... se aplica doar ptr 1 singura valoare !
...iar in sql am gasit doar cast si convert dar exec. CONVERT ( coloana , float ) nu merge .... se aplica doar ptr 1 singura valoare !
...nu prea inteleg "se aplica ptr 1 singura valoare"...
Incearca
SELECT MIN(CAST(coloana AS float)) FROM Tabel
* Vad ca in exemplul tau folosesti virgula, nu punct zecimal. Atentie si la "localele" folosite...
Error converting data type nvarchar to float. !
Din pacate nu merge ! ....si da, am pus bine virgula :: (ma rog ... era Convert(float,coloana))
Syntax for CAST:CAST ( expression AS data_type [ (length ) ])Syntax for CONVERT:CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
M-am referit la virgula din "0,000199".
Incearca sa "replace" vrgula cu un punct, deci cam:
SELECT MIN(CAST(x AS float)), unde x = REPLACE(coloana, ',', '.')
* Nu-i grozav, este doar "quick and dirty"
Am incercat si asa dar in ambele moduri am aceeasi eroare ::Error converting data type nvarchar to float!!
Am vazut un tabel la http://msdn2.microsoft.com/en-us/library/ms187928.aspx in care imi arata ca intre nvarchar si float am implicit conversion!
Idei ? :( ..
SELECT MIN(CAST(REPLACE(coloana, ',', '.') AS float)) FROM tabel
functioneaza...
Folosesc CAST pentru ca minimul sa fie "ales" dintre valori numerice. Altfel poti sa alegi un "minim" si dintre valori varchar, dar ele vor fi sortate alfabetic...
use testeselect min((cast(logicaldiskfreespace as float)) from logicaldisk;
Error : Incorrect syntax near the keyword 'from'. .... desi clar asta e numele tabelului !
Innebunesc!
Daca numele tabelului ar fi fost gresit atunci mesajul de eroare ar fi fost
Invalid object name 'logicaldisk' !
In cazul tau, eroarea se datoareaza faptului ca ai scris o ( in plus.
Corect ar fi: SELECT MIN ( CAST (logicaldiskfreespace as float ) ) from logicaldisk
A mers , merci ! Sunt eu chior !
Daca datele provin dintr-un import, nu poti "aranja" sa importi campul respectiv intr-o coloana de tip numeric? Asa ai scapa de "ocol".