SQL Server paramètre optionnel
Résolu/Fermé
soleil_levant
Messages postés
393
Date d'inscription
lundi 15 septembre 2008
Statut
Membre
Dernière intervention
14 avril 2011
-
14 sept. 2009 à 14:49
soleil_levant Messages postés 393 Date d'inscription lundi 15 septembre 2008 Statut Membre Dernière intervention 14 avril 2011 - 16 sept. 2009 à 11:03
soleil_levant Messages postés 393 Date d'inscription lundi 15 septembre 2008 Statut Membre Dernière intervention 14 avril 2011 - 16 sept. 2009 à 11:03
A voir également:
- SQL Server paramètre optionnel
- Netflix paramètre compte - Guide
- Remettre parametre usine pc - Guide
- Ps3 media server - Télécharger - Divers Réseau & Wi-Fi
- Parametre windows - Guide
- Changer parametre dns - Guide
4 réponses
soleil_levant
Messages postés
393
Date d'inscription
lundi 15 septembre 2008
Statut
Membre
Dernière intervention
14 avril 2011
32
14 sept. 2009 à 17:51
14 sept. 2009 à 17:51
Merci pour la réponse.
Je n'ai pas très bien compris. C'est quoi le 1 ==1??
Pourriez vous m'expliquer d'avantages s'il vous plaît?
Merci d'avance
Je n'ai pas très bien compris. C'est quoi le 1 ==1??
Pourriez vous m'expliquer d'avantages s'il vous plaît?
Merci d'avance
Giorgiolino
Messages postés
253
Date d'inscription
vendredi 15 mai 2009
Statut
Contributeur
Dernière intervention
2 mars 2015
52
14 sept. 2009 à 16:55
14 sept. 2009 à 16:55
Salut,
il y a une astuce qui consiste à rajouter une condition toujours vraie
WHERE (ta_condition) OR (1 ==1)
Je n'ai pas testé sous SQL Server mais ça vaut ce que ça vaut.
Bon courage.
il y a une astuce qui consiste à rajouter une condition toujours vraie
WHERE (ta_condition) OR (1 ==1)
Je n'ai pas testé sous SQL Server mais ça vaut ce que ça vaut.
Bon courage.
Giorgiolino
Messages postés
253
Date d'inscription
vendredi 15 mai 2009
Statut
Contributeur
Dernière intervention
2 mars 2015
52
15 sept. 2009 à 16:36
15 sept. 2009 à 16:36
Le 1=1 (et non pas 1==1 qui est une erreur de ma part) est une condition
qui est toujours vraie. ça permet de toujours faire exécuter une requête
même lorsque la condition préalable est fausse.
Si tu as fait un peu de logique, [(CONDITION) OR (1=1)] est une proposition logique.
Dans ta clause WHERE, si tes paramètres sont définis, CONDITION sera évaluée et la requête qui sera exécutée est la suivante :
A contrario, si tes paramètres ne sont pas définis CONDITION sera fausse. Or (jeu de mot intentionnel) la
deuxième condition 1 = 1 est toujours vraie. Donc au final la requête exécutée sera la suivante
AVERTISSEMENT :
Il faut bien être sûr de ce que tu fais en utilisant ce "truc". Parce que tu as là une requête qui fonctionnera
toujours même lorsque ta CONDITION est fausse, ce qui est potentiellement dangereux.
qui est toujours vraie. ça permet de toujours faire exécuter une requête
même lorsque la condition préalable est fausse.
Si tu as fait un peu de logique, [(CONDITION) OR (1=1)] est une proposition logique.
Dans ta clause WHERE, si tes paramètres sont définis, CONDITION sera évaluée et la requête qui sera exécutée est la suivante :
SELECT * FROM table WHERE CONDITION.
A contrario, si tes paramètres ne sont pas définis CONDITION sera fausse. Or (jeu de mot intentionnel) la
deuxième condition 1 = 1 est toujours vraie. Donc au final la requête exécutée sera la suivante
SELECT * FROM table
AVERTISSEMENT :
Il faut bien être sûr de ce que tu fais en utilisant ce "truc". Parce que tu as là une requête qui fonctionnera
toujours même lorsque ta CONDITION est fausse, ce qui est potentiellement dangereux.
soleil_levant
Messages postés
393
Date d'inscription
lundi 15 septembre 2008
Statut
Membre
Dernière intervention
14 avril 2011
32
16 sept. 2009 à 11:03
16 sept. 2009 à 11:03
Merci pour l'explication,
Je suis passé finalement par les valeurs par défaut (je les affecte à NULL) je fais des IF parametre1 IS NULL Traitement sans utiliser les parametres dans la clause
Else
Traitement avec les paramètres dans la clause where
ENd
Ca marche très bien du moment ou je les appel pas dans la proc lors de l'exec.
MErci
Je suis passé finalement par les valeurs par défaut (je les affecte à NULL) je fais des IF parametre1 IS NULL Traitement sans utiliser les parametres dans la clause
Else
Traitement avec les paramètres dans la clause where
ENd
Ca marche très bien du moment ou je les appel pas dans la proc lors de l'exec.
MErci