|
compare()
Die
String Function
compare()
vergleicht zwei
character strings
miteinander. Als Vergelichsbasis dient die Regel, die der
Sortierreihenfolde
(Collating Sequence)
des
Zeichsatzes
zu Grunde liegt. Sie wird entweder über den
Parameter "collation_name" oder "collation_id" angegeben werden kann.
Die String Funktion compare() gibt, abhänig von der gewählten Sortierreihenfolge unterschiedliche
Werte
zurück.
-
"1"
zeigt, dass "char_expression1" oder "uchar_expression1" größer als
"char_expression2" oder "uchar_expression2" ist.
-
"0"
zeigt, dass "char_expression1" oder "uchar_expression1" gleich groß wie
"char_expression2" oder "uchar_expression2" ist.
-
"-1"
zeigt, dass "char_expression1" oder "uchar_expression1" kleiner als
"char_expression2" oder "uchar_expression2" ist.
Syntax der String Function compare()
compare ( {char_expression1 | uchar_expression1},
{char_expression2 | uchar_expression2} ),
[{collation_name | collation_id}]
Die Parameter der String Function compare()
"char_expression1" und "char_expression2"
Der Parameter "char_expression1" wird mit dem Parameter "char_expression2"
verglichen. Beide Parameter müssen in entweder in einfachen oder doppelten Anführungsstrichen
angegeben werden. Sie können weiterhin aus
Variablen
oder
Konstanten
bestehen und müssen in einem der
Datentypen
char,
varchar,
nchar
oder
nvarchar
vorliegen.
"uchar_expression1" und "uchar_expression2"
Der Parameter "uchar_expression1" wird mit dem Parameter "uchar_expression2"
verglichen. Beide Parameter müssen in entweder in einfachen oder doppelten Anführungsstrichen
angegeben werden. Sie können weiterhin aus Variablen oder Konstanten bestehen und müssen in einem der
Datentypen
unichar
oder
univarchar
vorliegen.
"collation_name" und "collation_id"
Der Parameter "collation_name" muss ein in einfachen oder doppelten Anführungsstrichen
angegebener gültiger Name einer Sortierreihenfolge (collating name) sein. Siehe die unten stehende
Tabelle "collation Namen und ids". Alternativ kann auch die "collation_id" angegeben
werden. Wenn der Parameter "collation_name" oder "collation_id" nicht angegeben
wird, so verwendet die Funktion automatisch die binäre Sortierreihenfolge.
| collation Namen und ids |
| Beschreibung |
collation_name |
collation_id |
| Standard Unicode Mehrsprachig |
Standard |
20 |
| Thai Wörterbuch Sortierung |
thaidict |
21 |
| ISO14651 Standard |
iso14651 |
22 |
| UTF-16 Sortierung – stimmt mit der UTF-8 Binärsortierung überein |
utf8bin |
24 |
| CP 850 Alternative – "no accent" |
altnoacc |
39 |
| CP 850 Alternative – Kleinbuchstaben zuerst |
altdict |
45 |
| CP 850 Westeuropäisch – Ohne Berücksichtigung von Groß- und Kleinschreibung |
altnocsp |
46 |
| CP 850 Skandinavisch – Wörterbuch Sortierung |
scandict |
47 |
| CP 850 Skandinavisch – "case-insensitive" |
scannocp |
48 |
| GB Pinyin |
gbpinyin |
n/a |
| Binäre Sortierung |
binary |
50 |
| Latin-1 Englische, Französische, Deutsche Wörterbuch Sortierung |
dict |
51 |
| Latin-1 Englische, Französische, Deutsche "no case" |
nocase |
52 |
| Latin-1 Englisch, Französisch, Deutsch "no case", "preference" |
nocasep |
53 |
| Latin-1 Englisch, Französisch, Deutsch "no accent" |
noaccent |
54 |
| Latin-1 Spanisches Wörterbuch |
espdict |
55 |
| Latin-1 Spanisch "no case" |
espnocs |
56 |
| Latin-1 Spanisch "no accent" |
espnoac |
57 |
| ISO 8859-5 Russisches Wörterbuch |
rusdict |
58 |
| ISO 8859-5 Russisch "no case" |
rusnocs |
59 |
| ISO 8859-5 Kyrillisches Wörterbuch |
cyrdict |
63 |
| ISO 8859-5 Kyrillisch "no case" |
cyrnocs |
64 |
| ISO 8859-7 Griechisch Wörterbuch |
elldict |
65 |
| ISO 8859-2 Ungarisches Wörterbuch |
hundict |
69 |
| ISO 8859-2 Ungarisch "no accents" |
hunnoac |
70 |
| ISO 8859-2 Ungarisch "no case" |
hunnocs |
71 |
| ISO 8859-9 Türkisches Wörterbuch |
turdict |
72 |
| ISO 8859-9 Türkisch "no accents" |
turknoac |
73 |
| ISO 8859-9 Türkisch "no case" |
turknocs |
74 |
| CP932 binäre Sortierung |
cp932bin |
129 |
| Chiniesisch phonetische Sortierung |
dynix |
130 |
| GB2312 binäre Sortierung |
gb2312bn |
137 |
| Gewöhnliches Kyrillisches Wörterbuch |
cyrdict |
140 |
| Türkisches Wörterbuch |
turdict |
155 |
| EUCKSC binäre Sortierung |
euckscbn |
161 |
| Chinesisch phonetische Sortierung |
gbpinyin |
163 |
| Russische Wörterbuch Sortierung |
rusdict |
165 |
| SJIS binäre Sortierung |
sjisbin |
179 |
| EUCJIS binäre Sortierung |
eucjisbn |
192 |
| BIG5 binäre Sortierung |
big5bin |
194 |
| Shift-JIS binäre Sortierung |
sjisbin |
259 |
Beispiel für die String Function compare()
select compare("abc", "xyz")
go
-----
-1
Gibt "-1" zurück, da die Werte "abc" kleiner als "xyz" ist.
select compare("abc", "abc")
go
-----
0
Gibt "0" zurück, da die Werte "abc" gleich groß wie "abc" ist.
select compare("xyz", "abc")
go
-----
1
Gibt "1" zurück, da die Werte "xyz" größer als "abc" ist.
select compare("xyz", "abc", "binary")
go
-----
1
Wird binär sortiert. Gibt "1" zurück, da die Werte "xyz" größer als "abc" ist.
select compare(("xyz"), ("abc"), (50))
go
-----
1
Hier wird zur binären Sortierung alternativ die "collating_id" angegeben.
Gibt "1" zurück, da die Werte "xyz" größer als "abc" ist.
Probleme mit der Srting Funktion compare()
Die Funktion compare() kann beim Vergleich von zwei Werten für jedes zu vergleichende Zeichen
bis zu 6
Bytes
an Informationen erzeugen. Darum kann es vorkommen, dass das Speicherlimit erreicht wird.
Dann wird das Ergebnis entsprechend gekürzt (truncated) zurückgegeben. Falls das der Fall ist
wird eine Warnung ausgegeben, die
Abfrage
oder
Transaktion
wird aber nicht abgebrochen und läuft weiter. Das Speicherlimit der Srting Funktion ist von der
Page Size
des
ASE®s
abhängig. Wenn also die Rückgabewerte aus Mangel an Speicherplatz abgeschnitten werden müssen,
dann richtet sich der Rückgabewert nach der maximalen Speichergröße für die entsprechenden
DOL
und
APL
Tabellen.
| Locking scheme
| Page size
| Maximum row length
| Maximum column length
|
|
2K (2048 bytes) |
1962 |
1960 bytes |
| 4K (4096 bytes) |
4010 |
4008 bytes |
| APL tables |
8K (8192 bytes) |
8106 |
8104 bytes |
| 16K (16384 bytes) |
16298 |
16296 bytes |
| 2K (2048 bytes) |
1964 |
1958 bytes |
| 4K (4096 bytes) |
4012 |
4006 bytes |
| DOL tables |
8K (8192 bytes) |
8108 |
8102 bytes |
| 16K (16384 bytes) |
16300 |
16294 bytes* |
| 16K (16384 bytes) |
16300** |
8191-6-2 = 8183 bytes*** |
* wenn die Tabelle keine Spalten mit variablen Datentypen enthält.
** subject to a max start offset of varlen = 8191.
*** wenn die Tabelle mindestens eine Spalten mit variablen Datentypen enthält. Die Größe beinhaltet 6 bytes
für den Zeilen overhead und 2 bytes für die Feldlänge.
|
Siehe auch:
ascii(), char(), char(n), charindex(), char_length(), difference(), lower(), ltrim(), patindex(), replicate(), reverse(), right(), rtrim(), sortkey(), soundex(), space(), str(), String Funktionen, stuff(), substring(), to_unichar(), uhighsurr(), ulowsurr(), upper(), uscalar().
|