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

SQL Oracle Discussion :

Probleme recherche textes


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Par défaut Probleme recherche textes
    Bonjour,

    Voilà j'ai un problème dans mon filtre de recherche suivant:


    "PRODUIT"."NOM_PRODUIT" = decode(:SEARCH_TEXT,'%null%',"PRODUIT"."NOM_PRODUIT",:SEARCH_TEXT)))

    Ma recherche ne marche que si le texte rentré est l'exacte copie de la colonne. Je recherche donc un moyen de faire une recherche par exemple avec la moitié du mot. De même une recherche avec un mot d'une phrase.

    Comment puis-je faire pour résoudre ce problème?

  2. #2
    Membre chevronné Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Par défaut
    Citation Envoyé par Pedro Lito
    Bonjour,

    Voilà j'ai un problème dans mon filtre de recherche suivant:


    "PRODUIT"."NOM_PRODUIT" = decode(:SEARCH_TEXT,'%null%',"PRODUIT"."NOM_PRODUIT",:SEARCH_TEXT)))

    Ma recherche ne marche que si le texte rentré est l'exacte copie de la colonne. Je recherche donc un moyen de faire une recherche par exemple avec la moitié du mot. De même une recherche avec un mot d'une phrase.

    Comment puis-je faire pour résoudre ce problème?
    un case when je pense ....

    DECODE fait une égalité pas un like ...

  3. #3
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    INSTR permet de savoir en quelle position se trouve la chaine (equivalent au like). renvoit 0 si pas trouvé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NOM_PRODUIT  = DECODE(INSTR(:SEARCH_TEXT,'null'), 0, :SEARCH_TEXT,NOM_PRODUIT)
    C'est bizarre de tester 'null', j'espère que c'est un exemple.


    Edit : Enlevé le % dans le champ de recherche

  4. #4
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ("PRODUIT"."NOM_PRODUIT"  LIKE '%'||:search_text||'%'  OR :search_text IS NULL)
    NB : Ne pas mettre de % dans :SEARCH_TEXT,
    (ni de '_' d'ailleurs)

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Par défaut
    Citation Envoyé par Garuda
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ("PRODUIT"."NOM_PRODUIT"  LIKE '%'||:search_text||'%'  OR :search_text IS NULL)
    NB : Ne pas mettre de % dans :SEARCH_TEXT,
    (ni de '_' d'ailleurs)
    Merci pour le code, ça marche. Par contre quand il n'y a rien de marqué dans le texte, cela affiche tous les résultats. Tu as une solution?

    Merci d'avance. Et désolé pour mon débutantisme. ;-)

  6. #6
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    C'était dans ton exemple !
    Sinon
    vire le test IS NULL (c'est tres logique !)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ("PRODUIT"."NOM_PRODUIT"  LIKE '%'||:search_text||'%')

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Par défaut
    Citation Envoyé par Garuda
    C'était dans ton exemple !
    Sinon
    vire le test IS NULL (c'est tres logique !)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ("PRODUIT"."NOM_PRODUIT"  LIKE '%'||:search_text||'%')
    Oui c'est ce que j'ai fait mais rien n'y fait... J'ai avant ce filtre un autre filtre par LOV, je te montre vite fait.

    where "FAMILLE"."ID_FAMILLE"="SOUS_FAMILLE"."ID_FAMILLE"
    and "SOUS_FAMILLE"."ID_SOUSFAMILLE"="PRODUIT"."ID_SOUSFAMILLE"
    and "PRODUIT"."ID_PRODUIT"="SYMPTOME"."ID_PRODUIT"
    and "SYMPTOME"."ID_SYMPTOME"="RASSEMBLE"."ID_SYMPTOME"
    and "RASSEMBLE"."ID_PANNE"="PANNE"."ID_PANNE"
    and (("FAMILLE"."ID_FAMILLE" = decode(:liste_famille3,'%null%',"FAMILLE"."ID_FAMILLE",:liste_famille3)
    and "PRODUIT"."ID_SOUSFAMILLE" = decode(:liste_sous_famille3, '%null%', "PRODUIT"."ID_SOUSFAMILLE", :liste_sous_famille3)
    and "PRODUIT"."ID_PRODUIT" = decode(:liste_produit3,'%null%',"PRODUIT"."ID_PRODUIT",:liste_produit3))
    or ("PRODUIT"."NOM_PRODUIT" LIKE '%'||:search_text||'%')))

    Ais-je fait une erreur?

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Par défaut
    Citation Envoyé par miloux32
    un case when je pense ....

    DECODE fait une égalité pas un like ...

    Merci bien et tu verrais cela comment? Désolé mais je débute un peu en SQL, mis à part les semblant de cours à l'école sur ce sujet, je suis un peu perdu. J'apprends à tâton on va dire...

Discussions similaires

  1. [Fichier] Problème fichier texte
    Par ben127 dans le forum Langage
    Réponses: 3
    Dernier message: 03/02/2006, 21h41
  2. Souvent j'ai le probleme (recherche de carractere...)
    Par GESCOM2000 dans le forum Access
    Réponses: 7
    Dernier message: 21/01/2006, 20h13
  3. Recherche texte dans txt
    Par Guillaume602 dans le forum Windows
    Réponses: 3
    Dernier message: 21/12/2005, 00h05
  4. [VB6][Objet OLE] probleme récupération texte
    Par dedella_al dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 20/10/2005, 19h54
  5. Probleme CSS : Text centrer alors que je le veux a gauche...
    Par vampyrx dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 18/07/2005, 23h53

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