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!!!
Vous devez vous connecter pour publier un commentaire.
Je crois que vous avez besoin de filtrer les données de la chaîne avant d'essayer de la convertir:
'1e1'
, oùISNUMERIC
retourne 1je pense que cela a à voir avec la période, il ne sait pas comment faire pour le convertir.
avez-vous essayé float?