Je suis mis au défi par SQL Server. J'ai cette requête simple
SELET * FROM mytable WHERE ISNUMERIC(propertyvalue) = 1 AND CONVERT(int, CONVERT(decimal(9, 0), ISNULL(propertyvalue, 0 ))) > 0
J'ai essayé de changer la ligne de conversion de
CONVERT(decimal(9, 0), ISNULL(propertyvalue, 0))
à
CONVERT(decimal(9, 2), ISNULL(propertyvalue, 0))
ou
CAST(ISNULL(propertyvalue, 0) AS numeric)
aucun de ce que j'essaye ne travaille quoi que ce soit. Je continue à recevoir cette erreur
Msg 8114, niveau 16, état 5, ligne 1
Erreur lors de la conversion du type de données varchar en numérique.
Des idées sur la façon de résoudre ce problème?
ÉDITÉ
La propriétévalue a le type de varchar(255)
et il a des données comme
2 1.5 2.1 Ssortingng 1Ssortingng 456
Je crois que vous devez filterr datatables de la string avant d'essayer la conversion:
SELECT * INTO #temp FROM mytable WHERE propertyvalue NOT LIKE '%[^0-9]%' SELECT * FROM #temp WHERE CONVERT(INT, CONVERT(DECIMAL(9, 0), ISNULL(propertyvalue, 0))) > 0 DROP TABLE #temp
Je pense que c'était à faire avec la période, il ne sait pas comment le convertir.
avez-vous essayé le flotteur?
CONVERT(float, ISNULL(propertyvalue, 0 ))