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 :

Rechercher dans une table des donnees comportant des caracteres spéciaux


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 64
    Points : 44
    Points
    44
    Par défaut Rechercher dans une table des donnees comportant des caracteres spéciaux
    Bonjour !
    Je souhaite, dans une BDD mysql, trouver les enregistrements comportant des caractères spéciaux (espaces,caractères accentués.....).
    Comment peut on trouver ceux-ci ?
    J'ai tenté une requête ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT *
    FROM `coordonnees_fr`
    WHERE nom
    LIKE '%é%' LIMIT 0 , 30
    Mais cela me retourne même des lignes ne correspondant pas à ce token... par exemple : Amareins


    Merci d'avance...

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Salut,

    N'ayant jamais rencontré ce problème (et en prime ne travaillant pas sur MySQL), je ne sais pas du tout si ça va t'aider, mais as tu essayé en utilisant le code ascii du caractère é?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LIKE concat('%', chr(233), '%')

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 64
    Points : 44
    Points
    44
    Par défaut
    Non, cela ne fonctionne pas...
    Voici le message que mySQL me sort :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     SELECT *
    FROM `coordonnees_fr`
    WHERE nom
    LIKE concat( '%', chr( 233 ) , '%' )
    LIMIT 0 , 30


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    You have an error in your SQL syntax near '( 233  ) ,  '%'  )  LIMIT 0 , 30' at line 1

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Après une brève recherche, la fonction doit être char() en mysql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LIKE concat( '%', char( 233 ) , '%' )

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 64
    Points : 44
    Points
    44
    Par défaut
    Je viens de tester et apparement cela ne fonctionne pas, cela affiche encore les lignes ne comportant pas de 'é'..

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Pourrais tu nous donner un exemple précis de resultat de ta requete s'il te plaît?
    Je ne pourrais sans doute rien pour toi, mais ça pourrait peut etre aider quelqu'un de plus expérimenté en mysql

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 64
    Points : 44
    Points
    44
    Par défaut
    Voici la requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT *
    FROM `coordonnees_fr`
    WHERE nom
    LIKE concat( '%', char( 233 ) , '%' )  LIMIT 0 , 30
    Et le résultat :
    10022 Artemare 0.800524 0.0994838 1510
    10023 Asnières sur Saône 0.809542 0.0852302 1570
    10025 Bâgé la Ville 0.808378 0.0863938 1380
    10026 Bâgé le Châtel 0.808087 0.0861029 1380
    10028 Baneins 0.804888 0.0855211 1990
    10029 Beaupont 0.809833 0.0919207 1270

  8. #8
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 098
    Points : 28 409
    Points
    28 409
    Par défaut
    As-tu essayé ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM coordonnees_fr
    WHERE LOWER(nom) <> LOWER(UPPER(NOM))
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  9. #9
    Membre éclairé Avatar de Z3phur
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2007
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2007
    Messages : 680
    Points : 807
    Points
    807
    Par défaut
    essai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
    FROM `coordonnees_fr`
    WHERE nom
    LIKE '%&%';
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
    FROM `coordonnees_fr`
    WHERE nom
    LIKE '%&#%';
    ==========================================
    La justice sans la force est impuissante, la force sans la justice est tyrannique...

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 64
    Points : 44
    Points
    44
    Par défaut
    La première requête ne marche pas et la deuxième non plus

    et relativement à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT *
    FROM coordonnees_fr
    WHERE LOWER(nom) <> LOWER(UPPER(NOM))
    Cela ne fonctionne pas non plus

  11. #11
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    J'voudrais pas dire de bêtises, mais les COLLATION ça existe bien sous MySQL !



    Ce qui est pratique aussi, si un jour tu dois les mettre tes variables complètes tu pourras utiliser des introducteurs ou "COERCIBILITY(NomDeChamps)"

    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  12. #12
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 847
    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 : 21 847
    Points : 52 961
    Points
    52 961
    Billets dans le blog
    6
    Par défaut
    Il suffit effectivement de préciser la collation si votre SGBDR supporte cette fonctionalité qui fait partie de la norme SQL2 de 1992...

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM coordonnees_fr
    WHERE nom LIKE '%é%' COLLATE French_CI_AS --> signifie ordre dictionnaire français, case insensitive, accent sensitive.
    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/ * * * * *

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/01/2008, 16h58
  2. Recherche dans une table
    Par Fredo67 dans le forum Access
    Réponses: 2
    Dernier message: 28/02/2006, 17h21
  3. [SGBD] problème de recherche dans une base de donnée mysql
    Par Xini28 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 23/10/2005, 23h06
  4. recherche dans une table Access en ASP
    Par D-D dans le forum ASP
    Réponses: 3
    Dernier message: 09/06/2004, 10h12

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