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 :

Transosition d'un IIF vers CASE


Sujet :

MS SQL Server

  1. #1
    Jos
    Invité(e)
    Par défaut Transosition d'un IIF vers CASE
    Bonjour,

    Je dois migrer une bd de MS Access vers SQL Server. Dans une requête, j'ai une sélection utilisant des iif imbriqués me permettant de construire l'appellation de mon client :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT IIf(Not (IsNull([nom1])),[nom1] & ", " & [prenom1],"") & IIf(Not (IsNull([nom2]))," / " & [nom2] & ", " & [prenom2],"") & IIf(Not (IsNull([raison_sociale])),IIf(Not (IsNull([nom1]))," / ","") & [raison_sociale],"") AS NomClient, [...]
    De ce que j'en ai compris, sous MS SQL Server, les iff ne sont pas supportés et plutôt remplacés par les CASE.

    J'aimerais donc avoir votre avis à ce propos. Dans le cas présent, pour transformer l'identité d'un client vers une seule string, est-il adéquat d'utiliser un CASE? Le cas échéant, ceci aura-t-il un impact néfaste sur les performance en considérant qu'une grande quantité de donnée seront traitées par cette vue?

    Merci.

  2. #2
    Jos
    Invité(e)
    Par défaut
    Pour les intéressés, voici le CASE découlant de mon IIF

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT CASE WHEN ((nom1 IS NOT NULL) AND (nom2 IS NOT NULL) AND (raison_sociale IS NOT NULL)) THEN nom1 + ', ' + prenom1 + ' / ' + nom2 + ', ' + prenom2 + ' / ' + raison_sociale
    		WHEN ((nom1 IS NOT NULL) AND (nom2 IS NOT NULL)) THEN nom1 + ', ' + prenom1 + ' / ' + nom2 + ', ' + prenom2
    		WHEN ((nom1 IS NOT NULL) AND (raison_sociale IS NOT NULL)) THEN nom1 + ', ' + prenom1 + ' / ' + raison_sociale
    		WHEN (nom1 IS NOT NULL) THEN nom1 + ', ' + prenom1
    		ELSE raison_sociale END As NomClient
    FROM 
    	tblClients;
    J'aimerais cependant toujours avoir des opinions concernant l'impact que son utilisation aura sur des vues traitant un grand nombre de données.

    Merci.

  3. #3
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    Largement déconseillé dans le cadre d'utilisation intensive, car très loin de la logique ensembliste !

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

Discussions similaires

  1. Syntaxe incorrecte vers le mot clé 'case'.
    Par anayathefirst dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 21/08/2007, 18h25
  2. de If vers Case
    Par k-eisti dans le forum Général VBA
    Réponses: 2
    Dernier message: 26/04/2007, 17h04
  3. script case, redirigé vers url extérieure
    Par nath70 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 14
    Dernier message: 11/10/2006, 15h58
  4. [connx]syntaxe witch, ou case, ou IIF
    Par mica94 dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 04/07/2005, 12h03
  5. Portage requete Access vers SQL Server (Iif)...
    Par cmousset dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 14/06/2005, 16h38

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