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.
Ajouter la commande suivante au profil du serveur edasprof.prf :
SET COLLATION = {BINARY|SRV_CI|SRV_CS|CODEPAGE}
où :
applique la séquence de classement selon les valeurs binaires.
applique la séquence de classement selon le paramètre LANGUAGE, et est insensible à la casse.
applique la séquence de classement selon le paramètre LANGUAGE, et est sensible à la casse.
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.
Règles de tri et d'agrégation
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
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 |