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 :

Sort By : le underscore réagit bizarrement


Sujet :

SQL Oracle

  1. #1
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 992
    Points : 2 498
    Points
    2 498
    Par défaut Sort By : le underscore réagit bizarrement
    Bonjour,

    Voici ma question du jour

    Dans la table DBA_VIEWS d'Oracle, je veux faire un sort sur la colonne VIEW_NAME.
    J'obtiens un résultat curieux avec les noms de vues précédés de l'underscore : c'est comme si Oracle n'en tenait pas compte!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    select view_name from DBA_VIEWS where view_name like '%DBA_%' order by view_name;
     
    DBA_ANALYZE_OBJECTS           
    DBA_APPLICATION_ROLES         
    _DBA_APPLY                    
    DBA_APPLY                     
    _DBA_APPLY_BATCH_SQL_STATS    
    _DBA_APPLY_CHANGE_HANDLERS    
    DBA_APPLY_CHANGE_HANDLERS     
    _DBA_APPLY_CONF_HDLR_COLUMNS  
    DBA_APPLY_CONFLICT_COLUMNS    
    _DBA_APPLY_CONSTRAINT_COLUMNS 
    _DBA_APPLY_COORDINATOR_STATS  
    _DBA_APPLY_DML_CONF_COLUMNS   
    DBA_APPLY_DML_CONF_COLUMNS
    J'ai regardé quel était le type de sort, il est BINAIRE.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select * from nls_database_parameters where parameter='NLS_SORT';
     
    PARAMETER                      VALUE                                   
    ------------------------------ ----------------------------------------
    NLS_SORT                       BINARY                                  
    1 row selected.
    Je regarde le code ascii pour _ et je tombe sur 95 et 68 pour D donc tous les noms avec _ devraient être ensembles, non?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select ascii('D') , ascii ('_') from dual;
    ASCII('D') ASCII('_')
    ---------- ----------
            68         95
    1 row selected.
    Bon, j'avoue que je bloque sur ce point..
    Je ne peux pas modifier les paramètres de sort car cela aura des impact sur les tests donc si vous savez comment faire pour "bien" trier mes données, je suis preneur; en clair je veux que toutes les vues avec _ soient classées ensembles.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    NLS_SORT est aussi un paramètre de session (qui prime sur le paramètre de la base) :

    Code : 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    SQL> select view_name from DBA_VIEWS where view_name like '%DBA_APPLY%' order by view_name;
     
    VIEW_NAME
    ------------------------------
    _DBA_APPLY
    DBA_APPLY
    _DBA_APPLY_CHANGE_HANDLERS
    DBA_APPLY_CHANGE_HANDLERS
    _DBA_APPLY_CONF_HDLR_COLUMNS
    DBA_APPLY_CONFLICT_COLUMNS
    _DBA_APPLY_CONSTRAINT_COLUMNS
    DBA_APPLY_DML_HANDLERS
    DBA_APPLY_ENQUEUE
    _DBA_APPLY_ERROR
    DBA_APPLY_ERROR
     
    VIEW_NAME
    ------------------------------
    _DBA_APPLY_ERROR_HANDLER
    _DBA_APPLY_ERROR_TXN
    DBA_APPLY_EXECUTE
    DBA_APPLY_INSTANTIATED_GLOBAL
    DBA_APPLY_INSTANTIATED_OBJECTS
    DBA_APPLY_INSTANTIATED_SCHEMAS
    _DBA_APPLY_INST_GLOBAL
    _DBA_APPLY_INST_OBJECTS
    _DBA_APPLY_INST_SCHEMAS
    DBA_APPLY_KEY_COLUMNS
    _DBA_APPLY_MILESTONE
     
    VIEW_NAME
    ------------------------------
    _DBA_APPLY_OBJECT_CONSTRAINTS
    _DBA_APPLY_OBJECTS
    DBA_APPLY_PARAMETERS
    _DBA_APPLY_PROGRESS
    DBA_APPLY_PROGRESS
    _DBA_APPLY_SOURCE_OBJ
    _DBA_APPLY_SOURCE_SCHEMA
    _DBA_APPLY_SPILL_TXN
    DBA_APPLY_SPILL_TXN
    _DBA_APPLY_TABLE_COLUMNS
    DBA_APPLY_TABLE_COLUMNS
     
    VIEW_NAME
    ------------------------------
    _DBA_APPLY_TABLE_COLUMNS_H
     
    34 ligne(s) selectionnee(s).
     
    SQL> select * from nls_session_parameters where parameter='NLS_SORT';
     
    PARAMETER                      VALUE
    ------------------------------ ----------------------------------------
    NLS_SORT                       FRENCH
     
    SQL> alter session set NLS_SORT=BINARY;
     
    Session modifiee.
     
    SQL> select view_name from DBA_VIEWS where view_name like '%DBA_APPLY%' order by view_name;
     
    VIEW_NAME
    ------------------------------
    DBA_APPLY
    DBA_APPLY_CHANGE_HANDLERS
    DBA_APPLY_CONFLICT_COLUMNS
    DBA_APPLY_DML_HANDLERS
    DBA_APPLY_ENQUEUE
    DBA_APPLY_ERROR
    DBA_APPLY_EXECUTE
    DBA_APPLY_INSTANTIATED_GLOBAL
    DBA_APPLY_INSTANTIATED_OBJECTS
    DBA_APPLY_INSTANTIATED_SCHEMAS
    DBA_APPLY_KEY_COLUMNS
     
    VIEW_NAME
    ------------------------------
    DBA_APPLY_PARAMETERS
    DBA_APPLY_PROGRESS
    DBA_APPLY_SPILL_TXN
    DBA_APPLY_TABLE_COLUMNS
    _DBA_APPLY
    _DBA_APPLY_CHANGE_HANDLERS
    _DBA_APPLY_CONF_HDLR_COLUMNS
    _DBA_APPLY_CONSTRAINT_COLUMNS
    _DBA_APPLY_ERROR
    _DBA_APPLY_ERROR_HANDLER
    _DBA_APPLY_ERROR_TXN
     
    VIEW_NAME
    ------------------------------
    _DBA_APPLY_INST_GLOBAL
    _DBA_APPLY_INST_OBJECTS
    _DBA_APPLY_INST_SCHEMAS
    _DBA_APPLY_MILESTONE
    _DBA_APPLY_OBJECTS
    _DBA_APPLY_OBJECT_CONSTRAINTS
    _DBA_APPLY_PROGRESS
    _DBA_APPLY_SOURCE_OBJ
    _DBA_APPLY_SOURCE_SCHEMA
    _DBA_APPLY_SPILL_TXN
    _DBA_APPLY_TABLE_COLUMNS
     
    VIEW_NAME
    ------------------------------
    _DBA_APPLY_TABLE_COLUMNS_H
     
    34 ligne(s) selectionnee(s).
     
    SQL>

  3. #3
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 992
    Points : 2 498
    Points
    2 498
    Par défaut
    J'avoue ne pas avoir compris ta remarque

    Que faire pour avoir un sort normal?
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Ma remarque c'est de regarder le paramétrage au niveau de la session, il est probable que ce soit FRENCH (ou en tout cas pas BINARY).
    Et donc de le modifier en BINARY.

    Vous pouvez également regarder la fonction NLSSORT

  5. #5
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 992
    Points : 2 498
    Points
    2 498
    Par défaut
    BINGO, c'était bien ça :-

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select name, value from v$parameter where UPPER(NAME) like '%NLS%' order by name;
    
    NAME			VALUE
    nls_comp		BINARY
    nls_date_language	FRENCH
    nls_iso_currency	FRANCE
    nls_language		FRENCH
    nls_sort		FRENCH
    nls_territory		FRANCE
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

Discussions similaires

  1. texhash réagit bizarrement depuis la dernière installation
    Par Celano dans le forum Distributions
    Réponses: 10
    Dernier message: 22/08/2012, 16h00
  2. éxecutable qui réagit bizarrement
    Par bringer dans le forum Code::Blocks
    Réponses: 1
    Dernier message: 09/06/2010, 14h34
  3. [Dojo] dojox.grid.cells.Select réagit bizarrement
    Par moukit233 dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 24/02/2010, 15h28
  4. Jointure qui réagit bizarrement
    Par gunth dans le forum Requêtes
    Réponses: 3
    Dernier message: 16/02/2007, 17h59
  5. Réponses: 4
    Dernier message: 28/09/2002, 01h00

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