À l'aide de ENTRE sur un champ de type varchar pas un champ numérique?

Je suis à l'aide de ColdFusion 8 et SQL Server 2008 R2.

Je suis en train d'interroger une colonne de valeurs pour obtenir les lignes avec une valeur dans une plage. La colonne DOIT être numérique, mais il ne l'est pas. Il est configuré comme un varchar (par quelqu'un d'autre). Il y a plus de 100 000 lignes de données. Voici un FAUX exemple de données:

ID COLUMN
1  1
2  1.2 
3  0.9 
4  5 
5  -6

Ma requête ressemble à ceci:

select column
from table
where column between 1 and 2

Cette requête ne fonctionne pas parce que le défaut de déclaration de la colonne est une colonne de type varchar, et je reçois une erreur de conversion, donc j'ai du modifier le où le texte de la déclaration:

where column between '1' and '2'

Maintenant, quand je lance une requête de ce type, il fonctionne, mais je ne suis pas d'obtenir des résultats. Mais je sais que je devrais voir des résultats, parce que je sais que beaucoup de valeurs dans la colonne champ sont à l'intérieur de cette plage, je suis d'interrogation.

Je me demande si je vois pas de résultats en raison du champ de type varchar et pas un numérique. Peut-être que le gâcher mes résultats?

Aussi, nous avons plus de 100 000 enregistrements, nous sommes à la recherche par le, y aurait-il un gros gain de performance à l'aide d'un champ de type varchar au lieu d'un champ numérique?

un grand nombre de valeurs dans la colonne champ sont à l'intérieur de cette plage, je suis d'interrogation SI elles ont été stockées comme des numéros, oui. Mais depuis qu'ils sont enregistrés comme varchar la base de données compare des chaînes de caractères, essentiellement en comparant les valeurs ascii des caractères - pas le nombre global de ces caractères représentent. Ainsi, par exemple, la chaîne de valeur '12' est between '1' and '2'.
Pourquoi ne pas simplement mettre à jour la table de sorte que la colonne est numérique? Si les données sont numériques et l'utilisation de celui-ci est numérique, elle doit être stockée sous forme numérique. Ne pas traiter avec un effet de bord de la le problème entendre, de traiter le problème.
tous de la colonne, les valeurs de en fait, simple "doit être numérique" valeurs", ou certaines lignes contiennent de plus en plus problématique de données?

OriginalL'auteur Evik James | 2012-11-08