SQL Server 2005 Convertir VARCHAR INT mais par défaut sur de type non valide
J'ai un varchar(100) de la colonne dans une table qui contient un mélange d'entiers (comme des chaînes de caractères) et non entier cordes. E. g.
| dimension varchar(100) |
| '5' |
| '17' |
| '3' |
| 'Pyramids' |
| 'Western Bypass' |
| '15' |
Comment puis-je écrire une expression, par exemple, à la somme de toutes les valeurs sont valables entiers? Si je devais essayer:
-- should return 5 + 17 + 3 + 15 = 40
SELECT
SUM( CONVERT( INT, dimension ) )
FROM
mytable
Je voudrais recevoir un Conversion failed when converting the varchar value 'Pyramids' to data type int.
erreur.
Est-il un test que je peux utiliser dans mon expression, à l'instar de la ISNULL()
fonction, qui me permet de spécifier une valeur par défaut si le champ n'est pas un nombre?
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Le CAS, vérifier si
dimension
est numérique - si oui, de retour de cette valeur. Si ce n'est pas numérique, retourner une valeur par défaut (ici: 0)Est que vous devez requête qui, très souvent, vous pouvez également ajouter une persisté, colonne calculée à votre table qui encapsule ce calcul et stocke la valeur. De cette façon, lors de la sommation et ainsi de suite, vous n'êtes pas toujours re-calcul de la valeur:
Maintenant, vous pouvez
SELECT dimension, numericvalue FROM mytable
et d'obtenir à la fois des valeurs, sans calcul devant être exécuté.ISNUMERIC('-1.44')
etISNUMERIC('12')
retour 1", alors queISNUMERIC('foobar')
retour 0. Juste ce dont j'avais besoin.Vous allez rencontrer des problèmes de dépassement si vous avez un
varchar
comme88888888888888888888888