SQL IsNumeric ne fonctionne pas

La réserve de la colonne est une colonne de type varchar, pour effectuer sommes sur lui, je veux la convertir en une deciaml.
Mais le SQL ci-dessous me donne une erreur

select
cast(Reserve as decimal)
from MyReserves

Erreur de conversion de type de données varchar numérique.

J'ai ajouté le isnumeric et non pas la valeur null pour éviter cette erreur, mais il persiste encore, des idées pourquoi?

select
cast(Reserve as decimal)
from MyReserves
where isnumeric(Reserve ) = 1
and MyReserves is not null
  • Pouvez-vous montrer quelques données dans la Réserve de la colonne ?
  • Vous devez être prudent avec isnumeric, comme il peut retourner des résultats incorrects. C'est à partir de la documentation **ISNUMERIC retourne 1 pour certains caractères qui ne sont pas des numéros, comme le signe plus (+), moins (-), et valide les symboles monétaires tels que le signe dollar ($). ** Avoir un coup d'oeil à stackoverflow.com/questions/312054/...
  • il ne veut pas retourner des résultats incorrects. C'est juste que la plupart des gens n'apprécient pas qu'il répond à une question que personne n'a jamais, en fait, veut demander ("cette chaîne convertir pour au moins l'un des types numériques?")
  • Vous semblez être en supposant que le cast va se passer après la where. Ce n'est absolument pas garanti dans tous les cas, indépendamment des limitations de isnumeric
  • Je pense que vous devriez ajouter cela comme une réponse
  • La raison pour laquelle je ne l'ai pas, c'est parce qu'il y a déjà beaucoup de dupes pour ce cas. l'exemple De ce one

InformationsquelleAutor Hoody | 2011-09-27