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 :

requete matching chaine


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    446
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 446
    Par défaut requete matching chaine
    salut
    je veux savoir comment on peut faire du matching avec une requete sql.je m'explique on fait par exemple j'ai ma table TProd[idProd,NomProd,qte]
    quand je veux le produit ordinateur je fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from TProd where NomProd = 'Ordinateur'
    Supposons que l'utilisateur a saisi ordinateurre par erreur mais je veux lui signaler
    qu'il y'a une chaine qui peut correspondre càd ordinateur
    Comment je peux faire ça ??

    merci

  2. #2
    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 : 44
    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,

    Écrivez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM TProd WHERE NomProd LIKE '%Ordinateur%'
    Sachez que LIKE est peu performant, et que si vous souhaitez effectuer ce type de recherches sur du texte de façon fréquente, vous avez tout intérêt à utiliser la recherche de texte intégral (full-text indexed search)

    Précisez les colonnes plutôt que de mettre *, même si vous souhaitez que la requête vous retourne toute les colonnes.

    @++

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    446
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 446
    Par défaut
    je pense que vous m'aviez pas bien compri , en effet ce que je veux c'est que la réponse soit l'enregistrement dont le nomProduit est semblable de celui saisi.

    Autrement dit si je saisi le mot "Ventes" et dans ma base j'ai le mot "Vente" comment je peux savoir ça ,parceque avec le (Like) ceci ne résoud pas le probléme posé.

  4. #4
    Membre expérimenté
    Inscrit en
    Février 2009
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 224
    Par défaut
    La moins mauvaise façon de réaliser cette sélection est de faire appel aux fonctions soundex et difference par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from Tprod where DIFFERENCE(NomProd, 'ordinateurre')=4
    ATTENTION toutefois, lisez bien la descriptions de ces 2 fonctions afin de bien comprendre leur fonctionnement

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    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 : 22 010
    Billets dans le blog
    6
    Par défaut
    Non, il faut implémenter des algorithmes particulier de recherche flous sur des textes indexés comme le dico de knuth, la différence de hamming, la distance de levenshtein ou encore inférence basique dont je suis l'auteur. Lisez pour cela l'article que j'ai écrit :
    http://sqlpro.developpez.com/cours/s...aisons-motifs/

    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/ * * * * *

  6. #6
    Membre chevronné Avatar de agemis31
    Profil pro
    DBA
    Inscrit en
    Octobre 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DBA

    Informations forums :
    Inscription : Octobre 2007
    Messages : 399
    Par défaut
    Bonsoir,

    Malheureusement, SOUNDEX fonctionne très mal sur des chaînes de caractères en français.
    D'ailleurs, il n'a pas vraiment été créé pour cela. Il a été créé pour le recensement aux état-unis.

    Voici un lien complémentaire:

    http://www-lium.univ-lemans.fr/~carl...ndex.html#L7.1

    @+

Discussions similaires

  1. [AC-2003] Requete sur chaine de caractere
    Par Ega31 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 23/09/2010, 22h41
  2. requete match against
    Par nicolasferraris dans le forum Requêtes
    Réponses: 1
    Dernier message: 26/02/2009, 14h34
  3. Requete sur chaine de caractere
    Par ALEXM dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/09/2007, 16h30
  4. Requete Matching de mots
    Par slyer dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 05/02/2007, 20h04
  5. Requete avec chaine de caractère commence par
    Par jazzes_dean dans le forum Langage SQL
    Réponses: 7
    Dernier message: 02/08/2004, 13h07

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