J'ai actuellement une table avec une colonne comme varchar
. Cette colonne peut contenir des chiffres ou du texte. Lors de certaines requêtes, je la traite comme une bigint
(je fais une jointure entre cette colonne et une colonne dans une autre table qui est bigint
)
Tant qu'il n'y avait que des chiffres dans ce champ, je n'avais pas de problème, mais dès qu'une seule ligne contenait du texte et non des chiffres dans ce champ, j'obtenais le message "Error converting data type". varchar
a bigint
." même si, dans la partie WHERE, je me suis assuré qu'aucun des champs de texte n'apparaissait.
Pour résoudre ce problème, j'ai créé une vue comme suit :
SELECT TOP (100) PERCENT ID, CAST(MyCol AS bigint) AS MyCol
FROM MyTable
WHERE (isnumeric(MyCol) = 1)
Mais même si la vue n'affiche que les lignes avec des valeurs numériques et convertit Mycol en bigint, j'obtiens toujours un message d'erreur. Erreur de conversion du type de données varchar en bigint lors de l'exécution de la requête suivante :
SELECT * FROM MyView where mycol=1
Lorsque l'on fait des requêtes sur la vue, on ne doit pas savoir ce qui se passe derrière ! on doit simplement voir deux champs de type bigint ! ( voir l'image ci-jointe même mssql management studio montre que les champs de la vue sont des bigint).