Bonjour, je me heurte à des difficultés pour bien gérer des valeurs dans une colonne qui ne contiennent que le caractère tiret '-'. Ce caractère est considéré comme générique par SQL pour désigner n'importe quel caractère. Malheureusement j'ai des résultats que je n'explique pas malgré les précautions.
Pour illustrer mes problèmes voilà quelques requêtes, sur un fichier 'Table' et sa colonne 'Colonne', disons que j'ai deux enregistrements, l'un avec colonne vide , l'autre avec la valeur '-' :
Les deux enregistrements sont renvoyés, même celui avec '-' donc non vide ! Même chose en utilisant LIKE.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2SELECT * FROM Table WHERE colonne = '';
Autre chose :
Cette fois-ci je ne veux que les enregistrements avec colonne ayant juste le tiret comme valeur, j'ai bien pensé à échapper le tiret, mais même chose la requête me renvoie l'enregistrement avec le champ vide !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2SELECT * FROM Table WHERE colonne = '\-';
Là aussi résultat identique en utilisant LIKE et également en changeant de caractère d'échappement en utilisant ESCAPE.
Donc voilà soit je rate un truc énorme, soit il y a un truc qui chie dans la colle quelque part. J'espère que quelqu'un aura une idée de ce qui se passe avant que je me résous à employer des contournements vraiment crades.
Pour information j'utilise HFSQL en version 17 Classic. Les requêtes ont été exécutées avec Hfiltre et directement dans le Centre de contrôle HFSQL avec les mêmes résultats.
Partager