Clause WHERE foireuse ? [MYSQL] - SQL/NoSQL - Programmation
Marsh Posté le 27-06-2008 à 10:18:25
Conversion string -> entier je pense
mysql> select '1toto' + 2; |
Marsh Posté le 27-06-2008 à 11:20:39
Code :
|
Ca me retourne toujours quelque chose, pourtant CAST('1qs' AS CHAR) = 1qs
Même chose avec "AS SIGNED" et "AS UNSIGNED"
Marsh Posté le 27-06-2008 à 11:57:57
normal, ton cast ne modifie en rien la comparaison qui est faite.
Que tu castes ta chaine en char, en canard ou en poule, elle sera ensuite castée en int pour la comparer avec id qui est un int.
Il faudrait plutot caster le contenu de id, ou passer par une fonction de comparaison de chaines de caractères entre id et ta chaine 1qs, pour obtenir le comportement que tu souhaites.
Marsh Posté le 01-07-2008 à 18:54:33
C'est chelou MySQL quand même...
Normalement, un SGBD doit tenter de suivre les règles de cast implicite habituelles, c'est à dire caster du type le plus permissif vers le type le moins permissif.
En gros, tu devrais avoir une erreur car il n'arrive pas à caster la chaîne en entier
Marsh Posté le 01-07-2008 à 19:46:02
j'ai renoncé
vu que l'élément de recherche vient d'un GET, je me suis débrouillé pour que ce ne soit qu'un entier, comme ça, plus de problème
Marsh Posté le 27-06-2008 à 09:35:49
id est un int(11) index auto_increment
Dans la table boop, il y a une seul enregistrement id=1
Pourquoi cette requête me sort cet élément ?