Generiert Sortierschlüsselwerte. Das sind Werte, die benutzt werden können, um Zeichenfolgen basierend auf anderen Kollatierungsregeln zu sortieren.
SORTKEY( Zeichenfolgenausdruck [, { Kollatierung-ID | Kollatierung-Name[( Kollatierungsanpassung-Zeichenfolge) ] } ] )
Zeichenfolgenausdruck Der Zeichenfolgenausdruck muss Zeichen enthalten, die im Zeichensatz der Datenbank kodiert sind.
Wenn Zeichenfolgenausdruck eine leere Zeichenfolge ist, gibt die SORTKEY-Funktion einen Binärwert mit Nulllänge zurück. Wenn Zeichenfolgenausdruck NULL ist, gibt die SORTKEY-Funktion NULL zurück. Eine leere Zeichenfolge hat einen anderen Sortierfolgenwert als eine NULL-Zeichenfolge aus einer Datenbankspalte.
Die Maximallänge einer Zeichenfolge, die von der SORTKEY-Funktion verarbeitet werden kann, ist 254 Byte. Danach kommende Zeichen werden ignoriert.
Kollatierung-Name Eine Zeichenfolge oder eine Zeichenvariable, die den Namen der zu verwenden Sortierfolge angibt. Sie können auch den Alias char_collation bzw. das Äquivalent db_collation angeben, um Sortierschlüssel zu generieren, wie sie die von der Datenbank verwendete CHAR-Kollatierung verwendet. Gleichermaßen können Sie den Alias nchar_collation angeben, um Sortierschlüssel zu generieren, wie sie die von der Datenbank verwendete NCHAR-Kollatierung verwendet.
Kollatierung-ID Eine Variable, Ganzzahlkonstante oder Zeichenfolge, die den ID-Wert der zu verwendenden Sortierfolge angibt. Wenn Sie Kollatierung-ID angeben, ist der Standardwert Default Unicode Multilingual. Eine Liste der gültigen Kollatierungen finden Sie unter Unterstützte und alternative Kollatierungen und Empfohlene Zeichensätze und Kollatierungen.
Kollatierungsanpassung-Zeichenfolge
Optional können Sie Optionen für Kollatierungsanpassungen (Kollatierungsanpassung-Zeichenfolge) für eine zusätzliche Steuerung bei Zeichensortierungen und -vergleichen angeben. Diese Optionen werden in der Form von Schlüsselwort=Wert-Paaren,
die in Klammern gesetzt werden, hinter dem Kollatierung-Namen angegeben. Zum Beispiel: 'UCA(locale=es;case=LowerFirst;accent=respect)'
. Die Syntax zur Angabe dieser Optionen ist identisch mit der für die COLLATION-Klausel der CREATE DATABASE-Anweisung definierten
Syntax. Siehe Optionen für Kollatierungsanpassungen.
Alle Optionen der Kollatierungsanpassung werden unterstützt, wenn die UCA-Kollatierung angegeben ist. Bei allen anderen Kollatierungen werden nur die Einstellungen für Groß-/Kleinschreibung unterstützt.
BINARY
Die SORTKEY-Funktion generiert Werte, die benutzt werden können, um Ergebnisse nach einem vordefinierten Sortierreihenfolgenverhalten zu sortieren. Damit können Sie mit einem Sortierfolgeverhalten arbeiten, das möglicherweise der Datenbankkollatierung nicht zur Verfügung steht. Der zurückgegebene Wert ist ein Binärwert, der kodierte Sortierfolgeninformationen für die Eingabezeichenfolge aus der SORTKEY-Funktion enthält. Beispiel: Sie können die von der SORTKEY-Funktion zurückgegebenen Werte in einer Spalte mit der Quell-Zeichenfolge speichern. Wenn Sie die Zeichendaten in der gewünschten Reihenfolge abrufen wollen, braucht die SELECT-Anweisung nur eine ORDER BY-Klausel für die Spalten, in denen die Ergebnisse der SORTKEY-Funktion gespeichert sind.
Die SORTKEY-Funktion gewährleistet, dass die von ihr für gegebene Sortierfolgenkriterien zurückgegebenen Werte für die binären Vergleiche herangezogen werden können, die bei VARBINARY-Datentypen durchgeführt werden.
Das Generieren von Sortierschlüsseln für Abfragen kann kostenträchtig sein. Sie können alternativ für häufig angeforderte Sortierschlüssel eine berechnete Spalte zum Speichern des Sortierschlüssels erstellen, um anschließend diese Spalte in der ORDER BY-Klausel der Abfrage zu referenzieren.
Die Eingabedaten der SORTKEY-Funktion können bis zu sechs Byte von Sortierinformationen für jedes Eingabezeichen erzeugen. Die Ausgabedaten der SORTKEY-Funktion haben den Datentyp VARBINARY und eine Maximallänge von 1024 Byte.
Wenn Sie während der Erstellung des Sortierungsschlüssels UCA für die Kollatierung angeben, verwendet die Kollatierungsanpassung
die Berücksichtigung von Akzenten und der Groß- und Kleinschreibung. Beispiel: Wenn UCA selbst angegeben wird, entspricht
die Anpassung der Kollatierung 'UCA(case=UpperFirst;accent=Respect;punct=Primary)'
.
Wenn im zweiten Parameter von SORTKEY andere Kollatierungsanpassungen angegeben werden, heben diese Einstellungen die Standardeinstellungen auf. Die folgenden Anweisungen sind beispielsweise gleichwertig:
SELECT SORTKEY( 'abc', 'UCA(accent=Ignore)' ); SELECT SORTKEY( 'abc', 'UCA(case=UpperFirst;accent=Ignore;punct=Primary)' ); |
Wenn eine Nicht-UCA-Kollatierung angegeben wird, entspricht die Kollatierungsanpassung ebenfalls der Berücksichtigung von Akzenten und der Groß- und Kleinschreibung. Bei Nicht-UCA-Kollatierungen kann aber nur die Berücksichtigung von Groß- und Kleinschreibung durch eine Kollatierungsanpassung außer Kraft gesetzt werden. Zum Beispiel:
SELECT SORTKEY( 'abc', '1252LATIN1(case=Respect)' ); |
Wenn die Datenbank ohne die Angabe von Kollatierungsoptionen erstellt wurde (z.B. dbinit -c -zn uca mydb.db
), generieren die folgenden zwei Klauseln möglicherweise unterschiedliche Sortierreihenfolgen, auch wenn der Datenbank-Kollatierung-Name
in der SORTKEY-Funktion angegeben wird:
ORDER BY Zeichenfolgenausdruck ORDER BY SORTKEY( Zeichenfolgenausdruck, Name_Datenbankkollatierung ) |
Dies liegt daran, dass sich die Standardkollatierungseinstellungen, die für die Datenbankerstellung und die SORTKEY-Funktion verwendet wurden, voneinander unterscheiden. Um von SORTKEY dasselbe Verhalten wie bei der Datenbankkollatierung zu erhalten, geben Sie entweder eine Kollatierungsanpassungssyntax für Kollatierungsanpassung-Zeichenfolge an, die den Einstellungen für die Datenbankkollatierung entspricht, oder geben Sie db_collation für Kollatierung-Name an. Zum Beispiel:
SORTKEY( Ausdruck, 'db_collation' ) |
Sortierungsschlüsselwerte werden je nach der Version von SQL Anywhere auf verschiedene Weise generiert. Dies kann zu Problemen mit der Sortierung führen, wenn Sortierungsschlüsselwerte, die von einer Version von SQL Anywhere erstellt wurden, in einer Datenbank verwendet werden, die von einer anderen Version von SQL Anywhere erstellt wurde. Sie sollten Sortierschlüsselwerte neu generieren, wenn Probleme mit der Sortierung auftreten.
Außerdem sollten Sie Sortierschlüsselwerte neu generieren, wenn Sie ein Upgrade Ihrer Datenbank durch Entladen und Neuladen ausführen.
SQL/2008 Erweiterung des Herstellers.
Die folgenden Anweisungen fragen die Tabelle "Employees" ab und geben den Vornamen (FirstName) und Nachnamen (Surname) von allen Mitarbeitern zurück, und zwar sortiert anhand der Sortierschlüsselwerte für die Spalte "Surname", wobei die dict-Kollatierung (Latin-1, Englisch, Französisch, Deutsch lexikalisch) verwendet wird.
SELECT Surname, GivenName FROM Employees ORDER BY SORTKEY( Surname, 'dict' ); |
Das folgende Beispiel gibt den Sortierschlüsselwert für abc zurück, wobei die UCA-Kollatierung und Optionen für Kollatierungsanpassungen verwendet werden.
SELECT SORTKEY( 'abc', 'UCA(locale=es;case=LowerFirst;accent=respect)' ); |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |