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

Langage SQL Discussion :

Restriction WHERE sur champs texte


Sujet :

Langage SQL

  1. #1
    Membre confirmé Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Points : 540
    Points
    540
    Par défaut Restriction WHERE sur champs texte
    Bonjour,
    Je suis à la recherche d'une solution me permettant de faire une restriction sur la première lettre d'un champs.

    exemple:
    WHERE nom_champs LIKE 'A%'

    MAIS, j'ai lu il y a quelques temps une autre solution plus "rapide" qui me permettrait de faire ça, le problème étant que je n'arrive pas à remettre la main dessus..

    Cetait du type jesaisplusquoi(0,1; 'A')

    un truc du genre.

    Quelqu'un voit-il de quoi je parle? Ais-je été assez clair? :/
    Pouvez-vous m'aider dans mes recherches?

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,

    cherchez substring avec votre sgbd.

  3. #3
    Membre confirmé Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Points : 540
    Points
    540
    Par défaut
    Ce n'est pas exactement ce que je recherche, ou je vois pas comment faire car substring permet de recuperer des caractères.

    Exemple 1 :

    SELECT SUBSTR(store_name, 3)
    FROM Geography
    WHERE store_name = 'Los Angeles';

    Résultat :

    's Angeles'
    Hors ce que j'aimerais faire est une liste alphabétique.

    A B C D ...
    avec un lien dessus et passer la lettre en parametre GET pour ensuite n'afficher que les personnes dont la premiere lettre du nom est A (par exemple).

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bein,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT SUBSTR(store_name, 0, 1) -- ou SUBSTR(store_name, 1, 1) à vérifier
    FROM Geography
    WHERE store_name = 'Los Angeles';

    Le résultat sera 'L'.

    Maintenant si vous précisiez votre sgbd peut être qu'une syntaxe spécifique sera disponible.

  5. #5
    Membre confirmé Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Points : 540
    Points
    540
    Par défaut
    Bein,

    Justement c'est ce que je ne veux pas faire.

    Ce que je veux faire, c'est comme le LIKE, mais SANS le like ^^

    je veux récupérer le nom entier, en testant la première lettre.

    Je pourrais utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom_utilisateur like 'A%'
    mais j'ai lu ailleurs dans un débat comme quoi il y avait une fonction plus rapide car like utilise les expressions régulières.

    Voyez-vous ce que j'aimerais faire?

    En gros
    SELECT nom_utilisateur WHERE premierelettreduchamps = A. (sans like)

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Citation Envoyé par radicaldreamer Voir le message
    mais j'ai lu ailleurs dans un débat comme quoi il y avait une fonction plus rapide car like utilise les expressions régulières.
    Non c'est faux, vous avez encore le lien vers la source ?

  7. #7
    Membre confirmé Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Points : 540
    Points
    540
    Par défaut
    Ben non justement, j'essaye de retrouver ce lien mais impossible.

    Peut-être qu'il n'utilise pas d'expression régulières. OK.

    Mais un benchmark avait bien était fait et l'autre solution apparaissait comme plus rapide.

    [Edit]
    Autant pour moi, merci punkoff: c'est bien SUBSTR

    mais avec une utilisation différente:ù

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE SUBSTR(nom_utilisateur, 1, 1) = 'A'
    Cordialement. (:

  8. #8
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Si vous avez un index sur votre colonne nom_utilisateur, l'index sera utilisé avec LIKE mais pas avec SUBSTR.

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

Discussions similaires

  1. Erreur sur champ text pour un index Full-Text
    Par Steph82 dans le forum Outils
    Réponses: 5
    Dernier message: 06/01/2011, 14h08
  2. DISTINCT sur champ TEXT
    Par GTJuanpablo dans le forum Langage SQL
    Réponses: 1
    Dernier message: 03/03/2007, 22h41
  3. Probleme de filtre avec fonction Dlookup sur champ texte
    Par Piloupilou999 dans le forum Access
    Réponses: 5
    Dernier message: 27/01/2007, 22h41
  4. DBMemo sur champ Text erreur insert
    Par htristra dans le forum C++Builder
    Réponses: 1
    Dernier message: 02/11/2005, 15h17
  5. tri sur champ texte
    Par ridan dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/08/2004, 16h28

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