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

Sybase Discussion :

[T-SQL]Rercherche par mot clef


Sujet :

Sybase

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 95
    Points : 67
    Points
    67
    Par défaut [T-SQL]Rercherche par mot clef
    Bonjour je souhaiterai faire une recherche par mot clef.

    C'est possible avec une requete?

    Je veux en fait que ça affiche les lignes de ma table ou l'occurence demandée à été trouvée dans un des champs...

    Merci d'avance.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 95
    Points : 67
    Points
    67
    Par défaut
    SELECT * FROM tabletest WHERE message LIKE %test% OR msgequipement LIKE %test%

    J'ai pensé à ça comme requête. Qu'en pensez-vous ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 95
    Points : 67
    Points
    67
    Par défaut
    ok bon SELECT * FROM tabletest WHERE message LIKE %test% OR msgequipement LIKE %test%

    il manque les quote autour de %test%
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM tabletest WHERE message LIKE '%test%' OR msgequipement LIKE '%test%'

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    Cela marche évidemment, mais il faut se rendre compte que sur de grandes tables ce genre de requète va être lente, même avec un indexe sur la ou les colonnes qui est utilisée dans la clause WHERE en raison du % initial du pattern utilisé pour le LIKE.
    Michael Peppler
    Membre de TeamSybase - www.teamsybase.com

    "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 95
    Points : 67
    Points
    67
    Par défaut
    Dans ce cas comment faire pour que ça soit plus rapide ? préciser le champs de recherche ?

    Ou bien meme en précisant le champ , dans une grande base, sa sera toujours trop long à cause du % ?

    La seule solution est d'enlever le % alors ?

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    Le % initial dans la chaine que l'on recherche implique que toutes les entrées pour ce champs doivent être vérifiée. Si le champs est indexé l'optimiseur peut choisir de faire un "index scan" plutôt qu'un "table scan", ce qui peut être plus rapide, mais sur une grande table cela implique tout de même pas mal de travail.

    Il y a certaines techniques qui peuvent améliorer ceci.

    Premièrement, si l'on peut utiliser un WHERE champ LIKE 'toto%' et que "champ" est indexé alors la requète sera rapide (utilisation de l'indexe, et positionnement par clef).

    Alternativement il faut pré-macher le travail, cad créer une table dans la quelle on a un enregistrement par mot clef et par enregistrement de la table principale, et on fait une jointure entre cette table et la table principale pour trouver ce que l'on cherche.

    Au delà il y a encore des solutions plus poussées, comme p. ex. la recherche "full text" qui utilise un moteur de recherche et d'indexation de la société Verity...

    Michael
    Michael Peppler
    Membre de TeamSybase - www.teamsybase.com

    "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 95
    Points : 67
    Points
    67
    Par défaut
    Merci beaucoup pour cette réponse très complète !

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

Discussions similaires

  1. Recherche par mot clef dans une feuille excel.
    Par takamo dans le forum Excel
    Réponses: 12
    Dernier message: 18/06/2008, 14h35
  2. Comment réaliser une recherche par mot clef ?
    Par mouchkar dans le forum ASP.NET
    Réponses: 2
    Dernier message: 06/09/2006, 11h48
  3. [PL/SQL] Exception et mot-clef NULL
    Par Bahan dans le forum Oracle
    Réponses: 1
    Dernier message: 14/08/2006, 18h15
  4. pblm recherche par mot-clef - mysql_db_query
    Par carelha dans le forum Langage
    Réponses: 8
    Dernier message: 21/06/2006, 17h20
  5. [MySQL] SQL et résultat de recherche par mot clef
    Par carelha dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 18/04/2006, 15h40

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