La conversion échoue (SQL Server 2008)

J'ai une colonne

StudentData ( varchar )

Valeurs d'échantillon:

 Not regular 90 15.2 55 4 0 >15 regular 35 

J'ai une condition pour find tous les étudiants qui ont une valeur StudentData supérieure à 10 ou qui ont une valeur NULL.

Lorsque j'essaie de le convertir échoue, la conversion échoue. Comment peut-on get ces valeurs? Je m'attends à un résultat quelque chose comme

 studentdata 90 15.2 55 35 

Veuillez nous conseiller

Je pense que vous cherchez ceci:

 select * from t where studentdata is null or (isnumeric(studentdata) = 1 and CAST(studentdata AS float) > 10) 

Quoi qu'il en soit, vous devriez envisager de stocker des informations appropriées dans cette colonne, au lieu d'un mélange de choses.

Faites-moi savoir si vous avez un problème avec cela.

Vous pouvez utiliser isnumeric () mais il a quelques problèmes. IsNumeric () Broken? Seulement jusqu'à un point.

Quelque chose comme devrait fonctionner pour vous.

 select * from YourTable where case when isnumeric(studentdata+'E0') = 1 then cast(studentdata as float) else 0 end > 10