Il n'y a aucun problème a cette convertion, sauf si les valeurs sont stockées avec une virgule.
-- table de test
declare @VTE_LIGNE table( VLG_TVA varchar(100) null );
-- teste différentes valeurs
insert into @VTE_LIGNE values(null) -- NULL
insert into @VTE_LIGNE values('') -- chaine vide
insert into @VTE_LIGNE values('0') -- zero
insert into @VTE_LIGNE values('123') -- entier
insert into @VTE_LIGNE values('123.45') -- flottant (point)
insert into @VTE_LIGNE values('123,45') -- flottant (virgule)
-- convertions
select cast( replace(VLG_TVA,',','.') as float) from @VTE_LIGNE
/*
RESULTATS :
------------
NULL
0.0
0.0
123.0
123.45
123.45
*/
yan_lo_sanVotre texte ICIVotre texte ICI