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 :

Select sur VARCHAR2


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 20
    Par défaut Select sur VARCHAR2
    Avant de commencer, je ne suis pas le créateur de la structure de la table, simplement un utilisateur ... donc on ne rigole pas à la vue de la structure ...

    Voici la structure de la table :
    Code Table : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    C1          NOT NULL VARCHAR2(32)
    C2                             NOT NULL VARCHAR2(16)
    C3                             NOT NULL VARCHAR2(16)
    C4                             NOT NULL VARCHAR2(16)
    C5                             NOT NULL NUMBER
    C6                             DATE
    C7                             VARCHAR2(16)
    C8                             VARCHAR2(16)
    C9                             VARCHAR2(8)
    C10                           VARCHAR2(32)
    C11                           NOT NULL VARCHAR2(8)
    C12                           VARCHAR2(16)
    C13                           VARCHAR2(20)
    C14                           VARCHAR2(10)
    ...
    etc

    La clé primaire est réalisée par C1,C2,C3,C4,C5.

    Je tape cette requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from TABLE where C1 like 'ACACH%';
    elle ramène 3495 lignes

    Maintenant je tapes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from TABLE where C1 like 'ACACHA%';
    elle ramene 0 lignes.

    Pourtant dans le résultat précédent on voit :
    ACACHA-'_AAAER XXX XXXXXX XXXXXX ...

    Alors pourquoi l'ajout du A dans le critère provoque le rejet de toute les lignes ?

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT c1, NLSSORT(c1)
    from TABLE where C1 like 'ACACH%';
    et montre le résultat pour ton ACACHA-...

  3. #3
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 20
    Par défaut
    Ouha !! géniale cette commande.
    ça donne la séquence HEXA en BASE ?

    Code Résultat : Sélectionner tout - Visualiser dans une fenêtre à part
    ACACHA-'_AAAER                   141E141E3714141414286400010101010105002D0027005F050505030100

  4. #4
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Normalement oui, c'est ce sur quoi se base oracle pour les tris.
    Je ne sais pas suivant les NLS_SORT ce que ça change.
    Attention, il rajoute toujours le code '00' à la fin

    Mais bon, dans ton cas, je comprend pas le résultat.

  5. #5
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 20
    Par défaut
    Si cela peut aider voilà un autre exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ACACH9952008LU                   141E141E37F9F9F5F2F0F0F84B7300010101010101010101010101010100
    et un autre mais sur une séquence différente :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BS0729UTKRT                      1969F0F7F2F9736E46646E00010101010101010101010100

  6. #6
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Essaye plutôt avec cette fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE OR REPLACE FUNCTION f_hexa(p_chaine IN VARCHAR2)
    IS
    	v_hexa VARCHAR2(100);
    	v_chaine VARCHAR2(100) := p_chaine;
    BEGIN
    	FOR i IN 1..LENGTH(v_chaine)
    	LOOP
    		v_hexa := v_hexa || ' ' || ASCII(v_chaine);
    		v_chaine := SUBSTR(v_chaine, 2);
    	END LOOP;
    	RETURN(v_hexa);
    END;
    D'après moi y'a du chr(0) qui s'est incrusté.

  7. #7
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 20
    Par défaut
    scuse mais je ne suis pas très coutumier des fonctions PL.
    Comment j'execute cela ? et je ne suis d'utilisateur de la base non admin, le create fonction passera-t-il ?

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

Discussions similaires

  1. Recupération des selections sur une DBGrille multi Selection
    Par Andry dans le forum Bases de données
    Réponses: 1
    Dernier message: 26/11/2004, 11h43
  2. [SELECT sur 16 millions de lignes] délai très grand
    Par localhost dans le forum Requêtes
    Réponses: 6
    Dernier message: 22/11/2004, 17h04
  3. insert-select sur 2 base différente
    Par gskoala dans le forum Paradox
    Réponses: 2
    Dernier message: 16/11/2004, 15h11
  4. select sur un champ de type LONG
    Par ppd dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/09/2004, 18h19
  5. select sur plusieurs table, question sur jointure
    Par Schulman dans le forum Langage SQL
    Réponses: 7
    Dernier message: 03/09/2004, 13h54

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