IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

If dans la clause SELECT...


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 102
    Points : 74
    Points
    74
    Par défaut If dans la clause SELECT...
    Bonjour,

    je voudrais savoir s'il existe sous SQL SERVER une fonction IF pour le SELECT, je connais deja CASE mais je voudrais savoir s'il y en a une autre..

    merci

  2. #2
    Membre actif
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Points : 286
    Points
    286
    Par défaut
    Oui le IF Existe

  3. #3
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 102
    Points : 74
    Points
    74
    Par défaut
    peux tu me donner la synthaxe?

  4. #4
    Membre actif
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Points : 286
    Points
    286
    Par défaut
    IF...ELSE
    Impose les conditions d'exécution d'une instruction Transact-SQL. L'instruction Transact-SQL qui suit le mot clé IF et sa condition est exécutée si la condition est remplie (lorsque l'expression booléenne renvoie la valeur TRUE). Le mot clé facultatif ELSE introduit une instruction Transact-SQL de remplacement exécutée lorsque la condition IF n'est pas remplie (si l'expression booléenne renvoie FALSE).

    Syntaxe
    IF Boolean_expression
    { sql_statement | statement_block }
    [ ELSE
    { sql_statement | statement_block } ]

    Arguments
    Boolean_expression

    Expression qui renvoie la valeur TRUE ou FALSE. Si l'expression booléenne contient une instruction SELECT, cette dernière doit être mise entre parenthèses.

    {sql_statement | statement_block}

    Toute instruction ou tout groupe d'instructions Transact-SQL tels que définis dans un bloc d'instructions. À moins que vous n'utilisiez un bloc d'instructions, la condition IF ou ELSE ne peut affecter les performances que d'une seule instruction Transact-SQL. Pour définir un bloc d'instructions, utilisez les mots clés de contrôle de flux BEGIN et END. Les instructions CREATE TABLE ou SELECT INTO doivent se référer au même nom de table si elles sont utilisées dans les deux aires IF et ELSE du bloc IF...ELSE.

    Notes
    Vous pouvez utiliser les constructions IF...ELSE dans des lots, dans des procédures stockées (dans lesquelles ces constructions sont souvent utilisées pour tester l'existence de certains paramètres) et dans des requêtes appropriées.

    Les tests de la condition IF peuvent être imbriqués après une autre condition IF ou après une condition ELSE. Le nombre de niveaux d'imbrication est illimité.

    Exemple
    A. Utilisation d'un bloc IF...ELSE
    Cet exemple illustre une condition IF avec un bloc d'instructions. Si le prix moyen du titre n'est pas inférieur à 15 $, il imprime le message suivant : Prix moyen du titre supérieur à 15 $).

    USE pubs

    IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') < $15
    BEGIN
    PRINT 'The following titles are excellent mod_cook books:'
    PRINT ' '
    SELECT SUBSTRING(title, 1, 35) AS Title
    FROM titles
    WHERE type = 'mod_cook'
    END
    ELSE
    PRINT 'Average title price is more than $15.'

    Voici le jeu de résultats obtenu :

    The following titles are excellent mod_cook books:

    Title
    -----------------------------------
    Silicon Valley Gastronomic Treats
    The Gourmet Microwave

    (2 row(s) affected)

    B. Utilisation de plusieurs blocs IF...ELSE
    Cet exemple utilise deux blocs IF. Si le prix moyen du titre n'est pas inférieur à 15 $, il imprime le message suivant : Prix moyen du titre supérieur à 15 $. Si le prix moyen des livres de cuisine moderne est supérieur à 15 $, le système imprime l'instruction selon laquelle les livres de cuisine moderne sont chers.

    USE pubs

    IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') < $15
    BEGIN
    PRINT 'The following titles are excellent mod_cook books:'
    PRINT ' '
    SELECT SUBSTRING(title, 1, 35) AS Title
    FROM titles
    WHERE type = 'mod_cook'
    END
    ELSE
    IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') > $15
    BEGIN
    PRINT 'The following titles are expensive mod_cook books:'
    PRINT ' '
    SELECT SUBSTRING(title, 1, 35) AS Title
    FROM titles
    WHERE type = 'mod_cook'
    END

  5. #5
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 102
    Points : 74
    Points
    74
    Par défaut
    oui ca je l'avais vu dans l'aide...
    Mais ce n'est pas vraiment la question que j'avais poser....
    La question etait de savoir si on pouvait un truc du genre :
    SELECT IF(champ ='A') THEN 'titi' ELSE 'toto' AS ChampCreer
    FROM TableAvecChamp;

    Je ne pense pas en fait... il faut passer par TSQL et ca ne marche pas pour moi...

  6. #6
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonjour,
    Citation Envoyé par argv666
    IF(champ ='A') THEN 'titi' ELSE 'toto' AS ChampCreer
    Tu peux tutiliser CASE pour faire ça, voir ici :
    http://www.developpez.net/forums/vie....php?t=411536.
    Sinon IIF existe aussi mais il a l'air d'être 1 peu imprévisible ...

    A+

    [edit]Dsl, j'ai 1 peu m...é avec le lien, celui-ci est le bon : http://www.developpez.net/forums/vie...asc&highlight= [/edit]

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    1) IF ou IIF n'existe pas pour les ordres SQL
    2) la seule structure de branchement dans un ordre SQL c'est le CASE
    3) il existe des fonctions conditionnelles, telle que COALESCE ou NULLIF.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Citation Envoyé par SQLpro
    1) IF ou IIF n'existe pas pour les ordres SQL
    Oups ... Pas taper ! C pas ma faute si Bill fait ce qu'il veut avec les normes.

    Ds le forum SQL Server c'est difficile de ne pas citer des syntaxes proprios MS ...
    Et puis (sans vouloir lancer 1 débat) ne pas en parler ne les empêchera pas d'exister ...

    Mais finalement je ne m'en sort pas trop mal sur ce coup là, j'avais d'abord mis CASE ;-)

    A +

Discussions similaires

  1. Faire un calcul dans la clause SELECT ?
    Par MuLog dans le forum Langage SQL
    Réponses: 4
    Dernier message: 14/06/2010, 11h54
  2. [EF] Entite SQL - Requête dans une clause select
    Par Marsupilami_00 dans le forum Accès aux données
    Réponses: 0
    Dernier message: 20/11/2009, 11h05
  3. Réponses: 7
    Dernier message: 08/07/2008, 19h41
  4. 3 conditions dans une clause SELECT
    Par Aurèl90 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 03/11/2005, 16h05
  5. Sous-requête dans la clause Select
    Par Danger dans le forum WinDev
    Réponses: 2
    Dernier message: 24/05/2005, 17h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo