Vorgehensweise: Referenz: |
Kollation ist ein Regel-Set, das auf die Sortierung und Zuordnung aller Sprachelemente zutrifft, die den Vergleich von zwei Werten beinhalten. Dieses Feature wirkt sich auf viele Elemente aus. Zu diesen Features gehören Sortierung, Aggregation, WHERE-Bedingungen und StyleSheets. Per Default werden Elemente basierend auf ihren binären Werten sortiert. Die COLLATION-Einstellungen SRV_CI und SRV_CS, nicht von Groß- und Kleinschreibung abhängige und von Groß- oder Kleinschreibung abhängige Kollation, implementieren Kollation basierend auf der LANGUAGE-Einstellung. Kollation, die nicht von Groß- und Kleinschreibung abhängig ist bedeutet, dass alle WHERE-Klauseln und Sortierungen die Groß-/Kleinschreibung der Elemente ignorieren, die verglichen werden. COLLATION ist eine Einstellung auf der Ebene der Session (wird nicht in einer ON TABLE-Phrase unterstützt und und sollte eingestellt werden im Profil edasprof server).
Die Kollationseinstellung trifft nur auf alphanumerische Werte zu.
Fügen Sie den folgenden Befehl dem Profil server edasprof.prf hinzu:
SET COLLATION = {BINARY|SRV_CI|SRV_CS|CODEPAGE}
Hierbei gilt:
Die Kollationsreihenfolge basiert auf binären Werten.
Die Kollationsreihenfolge basiert auf der Einstellung LANGUAGE und ist nicht von Groß- oder Kleinschreibung abhängig.
Die Kollationsreihenfolge basiert auf der Einstellung LANGUAGE und ist von Groß- oder Kleinschreibung abhängig.
Die Kollationsreihenfolge basiert auf der gültigen Codeseite und ist von Groß- oder Kleinschreibung abhängig. CODEPAGE ist der Defaultwert.
In den meisten Fällen ist CODEPAGE identisch mit BINARY. Die einzigen Unterschiede bestehen für Dänisch, Finnisch, Deutsch, Norwegisch und Schwedisch in einer EBCDIC-Umgebung.
Regeln für Sortierung und Aggregation
Die folgende Anfrage erstellt eine FOCUS-Datenquelle namens COLLATE, die ein paar Datensätze mit Produktnamen hat, die sich nur durch die Groß-/Kleinschreibung unterscheiden:
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
Die folgende Anfrage druckt die Werte von PRODNAME in der Reihenfolge, in der sie im Eingabestream gefunden werden:
TABLE FILE COLLATE PRINT PROD_NUM PRODNAME END
In der Ausgabe unterscheiden sich die Zeilen mit den Produktnummern 1004 und 1005 nur durch die Groß-/Kleinschreibung des Buchstabens d in HD. Der Datensatz mit dem kleingeschriebenen d kommt vor dem Datensatz mit dem großgeschriebenen D. Die Zeilen mit den Datensatznummern 1006 und 1007 unterscheiden sich auch nur in der Groß-/Kleinschreibung des Buchstabens d in HD. In diesem Fall befindet sich der Datensatz mit dem großgeschriebenen D vor dem Datensatz mit dem kleingeschriebenen d:
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
Die nächste Anfrage sortiert die Ausgabe in BINARY-Reihenfolge. Die Einstellung COLLATION = BINARY ist wirksam:
TABLE FILE COLLATE PRINT PROD_NUM BY PRODNAME END
In einer EBCDIC-Umgebung werden die Datensätze mit den kleingeschriebenen Buchstaben vor den Datensätzen mit den großgeschriebenen Buchstaben sortiert, so dass die Zeile mit der Produktnummer 1007 vor der Zeile mit der Produktnummer 1006 sortiert wird:
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
In einer ASCII-Umgebung werden die Datensätze mit den großgeschriebenen Buchstaben vor den Datensätzen mit den kleingeschriebenen Buchstaben sortiert, so dass die Zeile mit der Produktnummer 1005 vor der Zeile mit der Produktnummer 1004 sortiert wird:
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
Wenn COLLATION auf SRV_CI eingestellt ist und eine Sortierung mit dem Feld PRODNAME durchgeführt wird, haben die groß- und kleingeschriebenen Buchstaben denselben Wert, so dass die Zeile nur einmal für mehrere Datensatznummern angezeigt wird. Beispielsweise werden die Zeilen mit den Produktnummern 1004 und 1005 mit demselben PRODNAME-Wert angezeigt und der Sortierfeldwert für die Anzeige ist der erste im Eingabestream.
Nachfolgend sehen Sie die Ausgabe in einer EBCDIC-Umgebung:
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
Nachfolgend sehen Sie die Ausgabe in einer ASCII-Umgebung:
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
Die folgende Anfrage mit der Datenquelle COLLATE wählt Datensätze aus, in denen der PRODNAME die Zeichen 'HD' enthält:
TABLE FILE COLLATE PRINT PROD_NUM PRODNAME WHERE PRODNAME CONTAINS 'HD' END
Wenn COLLATION auf BINARY eingestellt ist, werden nur die Datensätze mit einer genauen Übereinstimmung (HD ist großgeschrieben) ausgewählt. Die Ausgabe ist:
Product Product Number: Name: ------- ------- 1005 2 HD VCR LCD Menu 1006 Combo Player - 4 HD VCR + DVD
Wenn Sie dieselbe Anfrage ausführen, aber den COLLATION-Parameter auf SRV_CI einstellen, werden alle Datensätze mit einer beliebigen Kombination von groß- und kleingeschriebenen Werten für H und D ausgewählt. Die Zeilen werden in der Reihenfolge angezeigt, in der Sie in der Datenquelle vorkommen:
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 |