Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/06/2007, 14h19   #1
Invité de passage
 
Inscription : juin 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 2
Points : 1
Points : 1
Par défaut SELECT 1 = '1>1' retourne vrai

Bonjour,

Je suis surpris de constater que MySQL me retourne vrai lorsque j'entre cette requête:

Code :
1
2
3
4
5
6
7
mysql> SELECT 1 = '1 > 1';
+-------------+
| 1 = '1 > 1' |
+-------------+
|           1 |
+-------------+
1 row IN SET (0.00 sec)
Est-ce que quelqu'un arrive à m'expliquer la subtilité derrière tout ça?
Merci d'avance!
mexicanw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2007, 14h22   #2
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 450
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 450
Points : 7 559
Points : 7 559
Cette syntaxe ne correspond à rien que je connaisse en SQL
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2007, 14h27   #3
Invité de passage
 
Inscription : juin 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 2
Points : 1
Points : 1
Je suis tombé dessus par hasard en fait. Et comme j'aime bien comprendre les résultats des requêtes, ca m'interpelle. Surtout connaissant les résultats des requêtes suivantes:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
mysql> SELECT 1 = 'blabla';
+--------------+
| 1 = 'blabla' |
+--------------+
|            0 |
+--------------+
1 row IN SET (0.00 sec)
mysql> SELECT 0 = '1 > 1';
+-------------+
| 0 = '1 > 1' |
+-------------+
|           0 |
+-------------+
1 row IN SET (0.00 sec)
mysql> SELECT 1 = '1 > 2';
+-------------+
| 1 = '1 > 2' |
+-------------+
|           1 |
+-------------+
1 row IN SET (0.00 sec)
mexicanw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2007, 14h32   #4
Membre actif
 
Avatar de Vikisme
 
Homme François
Développeur Java
Inscription : avril 2007
Messages : 162
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 26
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Java

Informations forums :
Inscription : avril 2007
Messages : 162
Points : 179
Points : 179
Citation:
Envoyé par al1_24
Cette syntaxe ne correspond à rien que je connaisse en SQL
A mon avis c'est pas du sql mais du mysql.

Select c'est ce qui est utilisé avec MySQL pour afficher ce qu'on veut, une sorte de "print" (Utile quand on code des procédures stockées complexes...).
Mais savoir pourquoi c'est égale à 1 lorsque la chaine commence par un chiffre et 0 si c'est une lettre je sais pas.
__________________
Tout passe, tout casse
Le joint le cul lassent...


http://www.myspace.fr/geampa_raler
Vikisme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2007, 14h37   #5
Membre Expert
 
Avatar de Yanika_bzh
 
Homme Yannick
Ingénieur Etudes & Developpements
Inscription : février 2006
Messages : 1 125
Détails du profil
Informations personnelles :
Nom : Homme Yannick
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Ingénieur Etudes & Developpements
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 1 125
Points : 1 670
Points : 1 670
Faire de la logique en mélangeant chaines de caractères et nombres donne des résultats irréels.

Ceci dit
renvoie bien 0
Yanika_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 11h11   #6
Membre Expert
 
Avatar de Sivrît
 
Inscription : février 2006
Messages : 953
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2006
Messages : 953
Points : 1 189
Points : 1 189
Chez moi (5.0.27-community-nt-log) j'obtiens un warning :
Code null :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
mysql> SELECT 1='1>2';
+---------+
| 1='1>2' |
+---------+
|       1 |
+---------+
1 row IN SET, 1 warning (0.00 sec)
 
mysql> SHOW warnings;
+---------+------+-----------------------------------------+
| Level   | Code | Message                                 |
+---------+------+-----------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: '1>2' |
+---------+------+-----------------------------------------+
1 row IN SET (0.00 sec)

Il semblerait qu'en forçant '1<2' à être évalué numériquement mysql l'interprète comme '1.0' mal écrit.
Sivrît est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h00.


 
 
 
 
Partenaires

Hébergement Web