Comversion Implcite Non attendue
Bonjour,
J'utilise une variable varchar(), qui ne contient que des chiffres (pas de lettres ni espace ni aucun autre caractère)
quand elle contient une seqence de chiffres composant un numero supérieur à la val max de bigint, (9223372036854775807), l'alimentation plante !!!
Hypothèse que je me susi mise: une conversion implicite en bigint est faite,
problème : pourquoi et comment remedier à ça?
merci d'avance
La conversion implicite est à la demande du code/de l'utilisateur
Bonjour,
SQL serveur ne fait pas de conversion 'tout seul', il essaye de se débrouiller.
Par exemple bout de code TSQL suivant pose problème
Code:
1 2 3
| declare @sz varchar(50)
set @sz = '9223372036854775807'
print @sz - 1 |
Citation:
Msg*248, Niveau*16, État*1, Ligne*3
La conversion de la valeur varchar '9223372036854775807' a dépassé une colonne int.
On demande à Sql Serveur d'afficher une représentation textuelle
de l'expression suivante: @sz - 1
Or @sz est une chaîne et 1 est initialement non "non typé" puis convertit en int par sql serveur.
Quand il faut calculer, ça explose car sql assume
une expression du type int - int.
Le bout de code TSQL suivant fonctionne :lol:
Code:
1 2 3
| declare @sz varchar(50)
set @sz = '9223372036854775807'
print @sz - cast(1 as bigint) |
Il doit donc y avoir quleque choses dans votre base qui pousse sql à convertir ce varchar en int.