Contrôler la séquence de classement

Comment :

Référence :

Le classement est défini comme un ensemble de règles qui s'appliquent au tri et au coordiantion de tous les éléments de langue impliquant la comparaison de deux valeurs. Une grande variété d'éléments est touchée par cette fonctionnalité. Parmi ces fonctionnalités sont le tri, l'agrégation, les conditions WHERE et les Feuilles de style. Par défaut, les éléments sont triés en fonction de leurs valeurs binaires. Les paramètres COLLATION de SRV_CI et de SRV_CS, le classement avec respect de la casse, le classement sans respect de la casse et le classement d'implémentation sont basés sur le paramètre LANGUAGE. Le classement sans respect de la casse signifie que toutes les clauses et tris WHERE ignorent la casse des éléments comparés. COLLATION est un paramètre de niveau session (il n'est pas pris en charge dans une phrase ON TABLE et doit être réglé dans le profil du serveur edasprof).

Le paramètre de classement s'applique seulement aux valeurs alphanumériques.


Haut de page

x
Syntaxe : Etablir la séquence de classement binaire ou insensible à la casse

Ajouter la commande suivante au profil du serveur edasprof.prf :

SET COLLATION = {BINARY|SRV_CI|SRV_CS|CODEPAGE}

où :

BINARY

applique la séquence de classement selon les valeurs binaires.

SRV_CI

applique la séquence de classement selon le paramètre LANGUAGE, et est insensible à la casse.

SRV_CS

applique la séquence de classement selon le paramètre LANGUAGE, et est sensible à la casse.

CODEPAGE

applique la séquence de classement selon la page de code en vigueur, et est sensible à la casse. CODEPAGE est la valeur par défaut.

Dans la plupart des cas, CODEPAGE est identique à BINARY. Les seules différences sont pour le danois, finlandais, allemand, norvégien et suédois, dans l'environnement EBCDIC.


Haut de page

x
Référence : Notes d'utilisation pour SET COLLATION

Règles de tri et d'agrégation



Exemple : Utiliser les séquences de classement binaires et insensibles à la casse pour le tri

La requête suivante crée une source de données FOCUS nommée COLLATE qui a quelques enregistrements avec des noms de produit qui diffèrent seulement par la casse d'une lettre :

CREATE FILE COLLATE                                                
-RUN                                                               
MODIFY FILE COLLATE                                                
FIXFORM PROD_NUM/C4 PRODNAME/C30 QTY_IN_STOCK/C7 PRICE/C12 COST/C12
CHECK OFF                                                          
DATA                                                               
10042 Hd VCR LCD Menu               43068      179.00      129.00  
10052 HD VCR LCD Menu               43068      179.00      129.00  
1006Combo Player - 4 HD VCR + DVD   13527      399.00      289.00  
1007Combo Player - 4 Hd VCR + DVD   13527      399.00      289.00  
1008DVD Upgrade Unit for Cent. VCR    199      199.00      139.00  
1010750SL Digital Camcorder 300 X   10758      999.00      750.00  
1012650DL Digital Camcorder 150 X    2972      899.00      710.00  
1014340SX Digital Camera 65K P        990      249.00      199.00  
1015340SX digital Camera 65K P        990      249.00      199.00
1016330DX Digital Camera 1024K P    12707      279.00      199.00
1018250 8MM Camcorder 40 X          60073      399.00      320.00
1019250 8mm Camcorder 40 X          60073      399.00      320.00
1020150 8MM Camcorder 20 X           5961      319.00      240.00
1022120 VHS-C Camcorder 40 X         2300      399.00      259.00
1024110 VHS-C Camcorder 20 X         4000      349.00      249.00
1026AR2 35mm Camera 8 X             12444      129.00       95.00
1029AR2 35MM Camera 8 X             11499      109.00       79.00
1028AR3 35MM Camera 10 X            11499      109.00       79.00
1030QX Portable CD Player           22000      169.00       99.00
1032R5 Micro Digital Tape Recorder   1990       89.00       69.00
1034ZT Digital PDA - Commercial     21000      499.00      349.00
1036ZC Digital PDA - Standard       33000      299.00      249.00
END

La requête suivante imprime les valeurs de PRODNAME dans l'ordre dans lesquelles elles sont rencontrées dans le flux d'entrée :

TABLE FILE COLLATE
PRINT PROD_NUM PRODNAME
END

Sur la sortie, les lignes avec les numéros de produit 1004 et 1005 ne diffèrent que pour le cas de la lettre d en HD. L'enregistrement avec le d minuscule est avant l'enregistrement avec le D majuscule. Les lignes avec les numéros d'enregistrement 1006 et 1007 diffèrent également que dans le cas de la lettre d en HD. Dans ce cas, l'enregistrement avec le D majuscule est avant l'enregistrement avec le d minuscule :

Product  Product                       
Number:  Name:                         
-------  -------                       
1004     2 Hd VCR LCD Menu             
1005     2 HD VCR LCD Menu             
1006     Combo Player - 4 HD VCR + DVD 
1007     Combo Player - 4 Hd VCR + DVD 
1008     DVD Upgrade Unit for Cent. VCR
1010     750SL Digital Camcorder 300 X 
1012     650DL Digital Camcorder 150 X 
1014     340SX Digital Camera 65K P    
1015     340SX digital Camera 65K P    
1016     330DX Digital Camera 1024K P  
1018     250 8MM Camcorder 40 X        
1019     250 8mm Camcorder 40 X        
1020     150 8MM Camcorder 20 X        
1022     120 VHS-C Camcorder 40 X      
1024     110 VHS-C Camcorder 20 X      
1026     AR2 35mm Camera 8 X           
1029     AR2 35MM Camera 8 X           
1028     AR3 35MM Camera 10 X          
1030     QX Portable CD Player         
1032     R5 Micro Digital Tape Recorder
1034     ZT Digital PDA - Commercial   
1036     ZC Digital PDA - Standard

La requête suivante trie la sortie dans l'ordre BINARY. Le paramètre COLLATION = BINARY est en vigueur :

TABLE FILE COLLATE      
PRINT PROD_NUM          
BY PRODNAME             
END

Dans un environnement EBCDIC, les enregistrements avec des lettres minuscules trient avant les enregistrements avec des lettres majuscules, donc la ligne avec le numéro de produit 1007 trie avant la ligne avec le numéro de produit 1006 :

Product                         Product
Name:                           Number:
-------                         -------
AR2 35mm Camera 8 X             1026   
AR2 35MM Camera 8 X             1029   
AR3 35MM Camera 10 X            1028   
Combo Player - 4 Hd VCR + DVD   1007   
Combo Player - 4 HD VCR + DVD   1006   
DVD Upgrade Unit for Cent. VCR  1008   
QX Portable CD Player           1030   
R5 Micro Digital Tape Recorder  1032   
ZC Digital PDA - Standard       1036   
ZT Digital PDA - Commercial     1034   
110 VHS-C Camcorder 20 X        1024   
120 VHS-C Camcorder 40 X        1022   
150 8MM Camcorder 20 X          1020   
2 Hd VCR LCD Menu               1004   
2 HD VCR LCD Menu               1005   
250 8mm Camcorder 40 X          1019   
250 8MM Camcorder 40 X          1018   
330DX Digital Camera 1024K P    1016   
340SX digital Camera 65K P      1015   
340SX Digital Camera 65K P      1014   
650DL Digital Camcorder 150 X   1012   
750SL Digital Camcorder 300 X   1010

Dans un environnement ASCII, les enregistrements avec des lettres majuscules trient avant les enregistrements avec des lettres minuscules, donc la ligne avec le numéro de produit 1005 trie avant la ligne avec le numéro de produit 1004 :

Product                         Product 
Name:                           Number:
-------                         ------- 
110 VHS-C Camcorder 20 X        1024   
120 VHS-C Camcorder 40 X        1022   
150 8MM Camcorder 20 X          1020   
2 HD VCR LCD Menu               1005   
2 Hd VCR LCD Menu               1004   
250 8MM Camcorder 40 X          1018   
250 8mm Camcorder 40 X          1019   
330DX Digital Camera 1024K P    1016   
340SX Digital Camera 65K P      1014   
340SX digital Camera 65K P      1015   
650DL Digital Camcorder 150 X   1012   
750SL Digital Camcorder 300 X   1010   
AR2 35MM Camera 8 X             1029   
AR2 35mm Camera 8 X             1026   
AR3 35MM Camera 10 X            1028   
Combo Player - 4 HD VCR + DVD   1006   
Combo Player - 4 Hd VCR + DVD   1007   
DVD Upgrade Unit for Cent. VCR  1008   
QX Portable CD Player           1030   
R5 Micro Digital Tape Recorder  1032   
ZC Digital PDA - Standard       1036   
ZT Digital PDA - Commercial     1034

Avec COLLATION défini à SRV_CI et un tri sur le champ PRODNAME, les lettres majuscules et minuscules ont la même valeur, donc la ligne affiche qu'une fois les numéros d'enregistrement multiples. Par exemple, les lignes avec les numéros de produit 1004 et 1005 s'affichent avec la même valeur PRODNAME et la valeur de critère de tri pour l'affichage est la première valeur dans le flux d'entrée.

Le suivant affiche la sortie dans un environnement EBCDIC :

Product                         Product
Name:                           Number:
-------                         -------
AR2 35mm Camera 8 X             1026   
                                1029   
AR3 35MM Camera 10 X            1028   
Combo Player - 4 HD VCR + DVD   1006   
                                1007   
DVD Upgrade Unit for Cent. VCR  1008   
QX Portable CD Player           1030   
R5 Micro Digital Tape Recorder  1032   
ZC Digital PDA - Standard       1036   
ZT Digital PDA - Commercial     1034   
110 VHS-C Camcorder 20 X        1024   
120 VHS-C Camcorder 40 X        1022   
150 8MM Camcorder 20 X          1020   
2 Hd VCR LCD Menu               1004   
                                1005   
250 8MM Camcorder 40 X          1018   
250 8MM Camcorder 40 X          1019
330DX Digital Camera 1024K P    1016
340SX Digital Camera 65K P      1014
                                1015
650DL Digital Camcorder 150 X   1012
750SL Digital Camcorder 300 X   1010

Le suivant affiche la sortie dans un environnement ASCII :

Product                         Product   
Name:                           Number:   
-------                         -------    
110 VHS-C Camcorder 20 X        1024   
120 VHS-C Camcorder 40 X        1022   
150 8MM Camcorder 20 X          1020   
2 Hd VCR LCD Menu               1004   
                                1005   
250 8MM Camcorder 40 X          1018   
                                1019   
330DX Digital Camera 1024K P    1016   
340SX Digital Camera 65K P      1014   
                                1015   
650DL Digital Camcorder 150 X   1012   
750SL Digital Camcorder 300 X   1010   
AR2 35mm Camera 8 X             1026   
                                1029   
AR3 35MM Camera 10 X            1028   
Combo Player - 4 HD VCR + DVD   1006   
                                1007   
DVD Upgrade Unit for Cent. VCR  1008   
QX Portable CD Player           1030   
R5 Micro Digital Tape Recorder  1032   
ZC Digital PDA - Standard       1036   
ZT Digital PDA - Commercial     1034


Exemple : Utiliser les séquences de classement binaires et insensibles à la casse pour la sélection

La requête suivante contre la source de données COLLATE sélectionne les enregistrements dans lesquels la commande PRODNAME contient les caractères 'HD' :

TABLE FILE COLLATE          
PRINT PROD_NUM PRODNAME     
WHERE PRODNAME CONTAINS 'HD'
END

Avec COLLATION défini à BINARY, seuelement les enregistrements avec une correspondance exacte (majuscules HD) sont sélectionnés. La sortie est :

Product  Product                      
Number:  Name:                        
-------  -------                      
1005     2 HD VCR LCD Menu            
1006     Combo Player - 4 HD VCR + DVD

L'exécution de la même requête mais en changeant le paramètre COLLATION à SRV_CI sélectionne tous les enregistrements avec n'importe quelle combinaison de caractères majuscules et minuscules pour H et D. Les lignes sont affichées dans l'ordre dans lequel elles apparaissent dans la source de données :

Product  Product                      
Number:  Name:                        
-------  -------                      
1004     2 Hd VCR LCD Menu            
1005     2 HD VCR LCD Menu            
1006     Combo Player - 4 HD VCR + DVD
1007     Combo Player - 4 Hd VCR + DVD

WebFOCUS