Bonjour,
Dans un environnement MySQL / Interface PHP, je sollicite deux tables 1 et 2 avec une structure identique, l'une étant la copie conforme de l'autre sauf que j'y ai ajouté 4 champs en plus...
Ces tables possèdent à l'instant T les mêmes enregistrements.
J'interroge la T1 où un champ de type VARCHAR(8) NULL doit contenir une valeur 7000403, j'écris donc :
SELECT * FROM T1 WHERE MonChamp = '7000403'
Je trouve les enregistrements attendus, tout va bien.
Je procède de façon identique pour la T2 et même résultat.
Je vide alors la T2 et par un processus LOAD DATA INFILE(), je remplis la table T2 avec les lignes issues d'un fichier spécifique. (Chose qui est faite de façon systématique chaque matin pour la T1 avec un fichier strictement identique)
Je consulte ma table et mes enregistrements y sont présents dont ceux avec le fameux code 7000403…
Je pose alors la requête :
SELECT * FROM T2 WHERE MonChamp = '7000403'
Et MySQL ne trouve aucune correspondance !
Je pose alors
SELECT DISTINCT(MonChamp) FROM T2 ORDER BY MonChamp DESC
Et je vois donc mon 7000403…
Je ne comprends rien. Je procède alors avec un LIKE
SELECT * FROM T2 WHERE MonChamp LIKE '7000%'
ou encore
SELECT * FROM T2 WHERE MonChamp LIKE '7%'
Et idem, aucun enregistrement.
Me viens alors une idée…. Je change la requête ainsi :
SELECT * FROM T2 WHERE MonChamp = 7000403
En ôtant les quotes donc et là ça match !
Que se passe t-il d'un coup… enfin quel phénomène m'interdit d'interroger un VARCHAR sans délimiteur ?
Merci pour vos lumières
Argy
Partager