
Envoyé par
lsone
Par contre faut peut être convertir B car dans le between, actuellement B est un char de 20 et 0 et 5 sont des entiers. la conversion n'est pas implicite dans ton cas.
c'est justement ca le problème car ce que je faisais avant :
update toto set A=10
where convert(int, B) between 0 and 5
Mais si jamais B n'est pas numérique, ma requete plante, ce qui est tout à fait normal! d'où l'idée de tester si B est numérique ou pas :
update toto set A=10
where isnumeric(B) = 0
and convert(int, B) between 0 and 5
Actuellement B pour moi est un char(3), donc je me suis débrouillé en faisant:
update toto set A=10
where B like '[0-9][0-9][0-9]'
and convert(int, B) between 0 and 5
Mais imaginer ce que ca pourra etre si B est char(80), alors on va pas s'amuser à mettre [0-9] 80 fois!!! ou au pire, que B sera un varchar, donc on connait pas vraiment sa taille!!!!
Je trouve que c'est dommage qu'un SGBD aussi connu n'a pas des fonctiosn aussi essentielles!
Partager