Comment convertir une chaîne en entier dans SQL Server 2008?

Je suis remis en question 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)

rien de ce que je suis en train est de travail, afin que jamais. Je reçois cette erreur

Msg 8114, Niveau 16, État 5, Ligne 1

Erreur lors de la conversion du type de données varchar numérique.

Aucune idée sur comment résoudre ce problème?

ÉDITÉ

La propertyvalue le type de varchar(255) et il a données comme

2
1.5
2.1
String
1String 456
  • Pourriez-vous nous donner un exemple de données pour ne pas les convertir?
  • propertyvalue - de quel type?
  • Ceci, par exemple: ISNUMERIC('1e1')
  • Je viens de mettre à jour ma question avec ansers
  • Dave Gugg a la bonne réponse ci-dessous. Dans votre instruction select where clause, parce que le ISNUMERIC(...) = 1 et les CONVERTIR(..) > 0 les conditions sont sur le même niveau, ils sont à la fois évalué, peu importe si la valeur est numérique ou pas. Le non-valeurs numériques doivent être filtrés.
  • de travail pour moi avec les données de l'échantillon, l'ordre d'exécution d'expression ET la cause? je suis douteux
  • quel est le résultat attendu, je viens de le mettre en et il wrks pour moi aussi
  • C'est vraiment utile (valeurs comme "1e1' sont le problème): sqlservercentral.com/Forums/Topic243646-8-1.aspx
  • Je ne suis pas sûr de savoir pourquoi une marque de la question vers le bas. J'espère qu'ils ont une bonne raison de le faire!!!

InformationsquelleAutor Jaylen | 2014-11-20