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

Développement SQL Server Discussion :

NULL ET LIKE


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 68
    Par défaut NULL ET LIKE
    Bonjour

    J'ai un problème que je pensais de prime abord simple mais dont je ne vois pas le bout.
    J'ai une procédure stockée avec SELECT et un WHERE mon_champ = mom_parametre où mom_parametre = '%'
    Il me renvoie toutes les lignes sauf celles ou mon_champ est NULL

    Existe-il un moyen de d'inclure ces lignes en gardant le caractère dynamique de la claure WHERE ?

    Pour être plus précis, ma problématique est que si mon paramètre est vide, je souhaite renvoyer toutes les lignes, y compris les valeurs NULL et ce, pour plusieurs paramètres.

    Merci d'avance

    Herve Aouate

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    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 998
    Billets dans le blog
    6
    Par défaut
    Utilisez la fonction SQL normative COALESCE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE COALESCE(MaColonne, '') LIKE ???
    ou bien la prédicat IS NULL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE Macolonne LIKE ??? OR MaColonne IS NULL.
    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/ * * * * *

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Ou encore la fonction ISNULL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE ISNULL(MaColonne, '') LIKE ???
    Elle fonctionne pareillement que COALESCE, excepté qu'elle ne prend que deux paramètres.

    @++

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 68
    Par défaut
    Bonjour

    Je vous remercie tous les deux de vos réponses mais je n'ai pas bien expliqué ma question.

    Je souhaite écrire une procédure stockée avec plusieurs paramètres en entrée qui seront utilisés comme conditions dans le WHERE.
    Mais je souhaite que si un ou plusieurs de ces paramètres est NULL ou vide ou égal à 0, ils ne soient plus utilisés dans le WHERE.

    Exemple
    J'ai en entrée un code banque et un code agence.

    1) Si code banque =17 et code agence = 25 : je veux retourner tous les enregistrements dont le code banque =17 et code agence = 25 (Jusque là facile )

    2) Si code banque =17 et code agence = 0 : je veux retourner tous les enregistrements dont le code banque = 17, et ce quel quel soit le code agence, y compris s'il n'est pas renseigné (Là est mon problème )

    Dans le cas 2, vos solutions me renverraient uniquement les enregistrements dont le code banque = 17 et dont le code agence est NULL

    Sachant que je peux avoir jusqu'à une quinzaine de paramètres.

    Merci d'avance

    Herve Aouate

  5. #5
    Membre très actif Avatar de hazamor
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2008
    Messages : 179
    Par défaut Utilisez l'operateur OR
    Utilisez l'operateur OR:


    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ...
    Where col1= :par1 OR col12= :par2 OR col3= :par3 ...


  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 68
    Par défaut
    Non, cela ne convient pas car dans le cas de mon exemple 1, j'aurais les lignes qui correspondent à la première condition ou à la deuxième condition alors que je souhaiterai les lignes qui correspondent aux deux conditions.

    Merci quand même

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Doctrine] IS NULL en LIKE NULL, non merci !
    Par Invité dans le forum ORM
    Réponses: 4
    Dernier message: 17/09/2011, 14h09
  2. [VB6] [BDD] Recordset et champ égal à Null
    Par Gr|ppen dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/03/2003, 10h00
  3. [VB6] [ADO] Like sur base Access
    Par dlpxlid dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 24/01/2003, 11h03
  4. "ALTERER" une col. NULL en NOT NULL - Int
    Par Gandalf24 dans le forum SQL
    Réponses: 2
    Dernier message: 28/12/2002, 00h07
  5. Créer un interpréteur de langage inspiré du Basic
    Par Picasso dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 11/05/2002, 17h10

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