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 :

SQL Oracle 9 : Recherche de texte


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2009
    Messages : 10
    Points : 10
    Points
    10
    Par défaut SQL Oracle 9 : Recherche de texte
    Bonjour,

    j'ai une imprimante code barre qui ne supporte pas tous les caractères.
    Comment trouver par une requête sql pas trop compliquée les enregistrements contenant ces caractères interdits ou ne contenant pas ceux autorisés qui sont pour rester simple les lettres de l'alphabet et les chiffres.

    merci d'avance.

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Bonjour

    TRANSLATE vous fera ça très bien : on remplace les lettres et les chiffres par rien, et on regarde ce qu'il reste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    create table test(texte varchar2(100));
    insert into test values('lqs2sKLM5df9qslfkjPQSDF');
    insert into test values('klj45)slkfsdf45°*');
     
    select texte from test 
    where translate(upper(texte), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', chr(0)) is not null;
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2009
    Messages : 10
    Points : 10
    Points
    10
    Par défaut SQL Oracle 9 : Recherche de texte, utilisation de translate
    Bonjour,
    merci pour l'aide et excusez-moi de répondre un peu tardivement (débodé)

    Un petit complément d'information car la requête ne fonctionne pas systématiquement.
    En effet j'ai un certain nombre deligne qui sortent en erreur alors qu'elles ont des caractères valides. Ex. : "8A".

    exemple sur dual :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT RAWTOHEX(translate(upper('8A'),
    ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ', chr(0))) as  "résultat",
    length((translate(upper('8A'), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ', chr(0)))) as "longueur"
    FROM dual
    Ce qui prouve que cela ne renvoie pas une chaîne vide !

    Merci de vos remarques.
    Ce n'est pas urgent, mais j'aimerais bien résoudre définitivement ce petit problème.

  4. #4
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Exact !
    Par le hasard de mes exemples, j'ai eu l'illusion que ça marchait, mais ma proposition est boguée et butera sur toute chaîne qui contient un A majuscule, car celui-ci est remplacé par chr(0), qui est bien un caractère même s'il n'est pas affichable.

    En gardant le même principe, je vous propose la variation suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT texte FROM test WHERE translate(upper(texte), '*ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', '*') IS NOT NULL;
    Dans ce cas, * sera remplacé par * (on pourrait prendre à la place n'importe quel caractère non alphabétique et non numérique), et toutes les lettres et les chiffres seront remplacés par rien.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2009
    Messages : 10
    Points : 10
    Points
    10
    Par défaut SQL Oracle 9 : Recherche de texte (suite et fin)
    Pour clôturer le sujet et comme '*' peut faire partie des caractères "utiles", il suffit juste de le remplacer par chr(0) et le tour est joué.
    merci pour votre participation.

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

Discussions similaires

  1. recherche en text integral avec sql server 2008
    Par marwa21 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/04/2011, 17h58
  2. Réponses: 0
    Dernier message: 23/02/2011, 16h29
  3. moteur de recherche sou pl sql oracle
    Par sirene_brune dans le forum PL/SQL
    Réponses: 4
    Dernier message: 24/05/2010, 21h52
  4. Recherche Full-Text SQL Server (pdf et doc oppen office)
    Par 2berte dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 21/12/2009, 21h03
  5. Recherche de texte dans un blob sous oracle
    Par nesbla dans le forum Bases de données
    Réponses: 5
    Dernier message: 25/05/2004, 11h11

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