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 :

Recherche d'une chaine dans plusieurs colonnes


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Par défaut Recherche d'une chaine dans plusieurs colonnes
    Ma recherche ne me retourne jamais de résultat quelqu'un peut m'aider?
    J'utilise sql server !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    GO
    ALTER PROCEDURE [dbo].[sp_RechercheClient]  @critere varchar(50)
    AS 
    SELECT *
    FROM dbo.CLIENTS_AVANTAGE
    WHERE upper(CNOM)+upper(CRESP)+upper(CADR)+upper(CVIL) LIKE upper('%@critere%')
    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Votre façon de faire est dégueulasse et ne doit pas être très performante.
    Vous feriez mieux de faire une clause différente par champs.
    En plus, si un des champs est null, la concaténation retournera un null...
    Sinon, c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WHERE upper(CNOM)+upper(CRESP)+upper(CADR)+upper(CVIL) LIKE upper('%'+@critere+'%')

  3. #3
    Membre à l'essai
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Par défaut
    Citation Envoyé par 7gyY9w1ZY6ySRgPeaefZ Voir le message
    Votre façon de faire est dégueulasse et ne doit pas être très performante.
    Vous feriez mieux de faire une clause différente par champs.
    En plus, si un des champs est null, la concaténation retournera un null...
    Sinon, c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WHERE upper(CNOM)+upper(CRESP)+upper(CADR)+upper(CVIL) LIKE upper('%'+@critere+'%')
    Merci pour l'encouragement Je suis débutant en sql server alors je suis ouvert au suggestion

    zinzineti : Merci sa fonctionne !

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par darkgamin Voir le message
    Merci pour l'encouragement Je suis débutant en sql server alors je suis ouvert au suggestion
    Désolé de vous ouvrir les yeux, mais les pistes sont dans la suite du message :
    Vous feriez mieux de faire une clause différente par champs.
    En plus, si un des champs est null, la concaténation retournera un null...
    Si vous voulez plus de détails, je reste à votre disposition.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Par défaut
    Citation Envoyé par 7gyY9w1ZY6ySRgPeaefZ Voir le message
    Désolé de vous ouvrir les yeux, mais les pistes sont dans la suite du message :
    Si vous voulez plus de détails, je reste à votre disposition.
    En effet j'aimerais bien améliorer ma procédure. Cependant je ne comprend pas très bien ce que vous voulez dire par "faire une clause différente par champ" Merci!

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par darkgamin Voir le message
    En effet j'aimerais bien améliorer ma procédure. Cependant je ne comprend pas très bien ce que vous voulez dire par "faire une clause différente par champ" Merci!
    Faites comme ceci, comme ça si vous avez un champ à null, ça pourra tout de même vous ramener la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    WHERE CNOM LIKE '%'+@critere+'%'
    	or CRESP LIKE '%'+@critere+'%'
    	or CADR LIKE '%'+@critere+'%'
    	or CVIL LIKE '%'+@critere+'%'
    De plus, MS Sql server n'est pas case sensitive par défaut - (sauf si la collation a été modifié pour que la bd le soit), alors les upper ne sont pas vraisemblablement pas nécessaire dans votre requête.

  7. #7
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    Essaye ceci pour voir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SET ANSI_NULLS ON
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER PROCEDURE [dbo].[sp_RechercheClient]  @critere varchar(50)
    AS 
    DECLARE @varUpper VARCHAR (1024)
    SET @varUpper = upper (@critere)
    SELECT *
    FROM dbo.CLIENTS_AVANTAGE
    WHERE upper(CNOM)+upper(CRESP)+upper(CADR)+upper(CVIL) LIKE '%' + @varUpper + '%'
    Etienne ZINZINDOHOUE
    Billets-Articles

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/05/2011, 15h10
  2. Recherche d'une valeur dans plusieurs colonnes
    Par Arnaud F. dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/03/2009, 12h44
  3. Recherche d'une chaine dans un champ
    Par Cyberbob002 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 06/01/2006, 16h21
  4. Comment rechercher une chaine dans plusieurs tables ?
    Par tsing dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/11/2005, 19h04
  5. [Tableaux] Recherche d'une chaine dans un tableau
    Par tom06440 dans le forum Langage
    Réponses: 5
    Dernier message: 21/10/2005, 00h27

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