Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - Datenbankadministration » Konfiguration Ihrer Datenbank » Internationale Sprachen und Zeichensätze » Referenzinformationen zu Zeichensatz und Kollatierung

 

Türkische Zeichensätze und Kollatierungen

Die türkische Sprache kennt zwei Formen des Buchstabens, der uns als I erscheint. Eine Form, genannt I-dot, erscheint folgendermaßen:

I-Punkt bei Klein- und Großbuchstaben-

Die zweite Form, genannt I-no-dot, erscheint folgendermaßen:

I-ohne-Punkt bei Klein- und Großbuchstaben-

Auch wenn diese beiden Buchstaben als Varianten ein und desselben Buchstabens erscheinen, werden sie im türkischen Alphabet als verschiedene Buchstaben behandelt. SQL Anywhere stellt die türkische Kollatierung 1254TRK zur Verfügung, um diese Variationen zu unterstützen.

Die türkischen Regeln für die Groß-/Kleinschreibungs-Konvertierung sind nicht kompatibel mit den entsprechenden ANSI SQL-Standardregeln. Im Türkischen ist z.B. das Kleinbuchstaben-Äquivalent von I:

Kleingeschribenes I-ohne-Punkt

Im ANSI-Standard dagegen ist es:

Kleingeschribenes I

Aus diesem Grunde hängt die korrekte Groß-/Kleinschreibungs-Konvertierung davon ab, ob für den zu vergleichenden Text türkisches oder englisches ANSI festgelegt ist. In vielen Fällen ist es nicht möglich diese Unterscheidung zu treffen, was in den betroffenen Datenbanken zu nicht standardmäßigem Verhalten führt.

Nehmen wir z.B. folgende Anweisungen, die in einer Datenbank ausgeführt werden, die die 1254TRK-Kollatierung verwendet:

SELECT-Anweisungen, die aufzeigen, wie Konflikte zwischen dem klein- bzw. großgeschriebenen ANSI-Buchstaben I und den türkischen klein- bzw. großgeschriebenen I-mit-Punkt- und I-ohne-Punkt-Zeichen auftreten können.

Die erste Anweisung referenziert ein Systemobjekt, und ANSI SQL-Konvertierungsregeln sind für die Namensabgleichung erforderlich. Die zweite Anweisung referenziert ein Benutzerobjekt, und türkische Konvertierungsregeln sind für die Namensabgleichung erforderlich. Der Datenbankserver kann jedoch nicht bestimmen, welche Konvertierungsregeln er verwenden soll, bevor er nicht erkennt, um welches Objekt es sich handelt, und er erkennt das Objekt erst, wenn er weiß, welche Konvertierungsregeln er verwenden soll. Weder für System- noch für Benutzerobjekte kann diese Situation zufriedenstellend aufgelöst werden. Da der Datenbankserver in diesem Beispiel die türkische Kollatierung 1254TRK verwendet, schlägt die erste Anweisung fehl, weil ein kleines "i" nicht als äquivalent zu einem großen "I" angesehen wird, während die zweite Anweisung erfolgreich ist.

Die Inkompatibilität des türkischen Standards und des ANSI-Standards erfordert, dass Referenzen auf Systemobjekte in türkischen Datenbanken den Objektnamen korrekt in Groß- bzw. Kleinbuchstaben wiedergeben, d.h. so, wie bei der Erstellung des Objektes. Die erste Anweisung oben müsste folgendermaßen geschrieben werden:

SELECT-Anweisung mit allen großgeschriebenen ANSI-Buchstaben

Genau genommen muss nur der Buchstabe "I" in der korrekten Groß-/Kleinschreibung angegeben werden.

Als Alternative wäre es akzeptabel, wenn auch ungewöhnlich, die Anweisung folgendermaßen zu schreiben:

SELECT-Anweisung mit kleingeschriebenen I-ohne-Punkt

Beachten Sie, dass bei Schlüsselwörtern wie INSERT die Groß-/Kleinschreibung auch in türkischen Datenbanken nicht berücksichtigt wird. SQL Anywhere weiß, dass alle Schlüsselwörter nur englische Buchstaben verwenden, daher werden ANSI-Konvertierungsregeln für die Groß-/Kleinschreibung bei der Abgleichung von Schlüsselwörtern verwendet. SQL Anywhere wendet dieses Wissen auch bei bestimmten anderen Bezeichnern an, wie z.B. bei integrierten Funktionen. Objekte, deren Namen im Katalog gespeichert werden, müssen jedoch in der korrekten Groß-/Kleinschreibung angegeben werden, wie oben beschrieben.


Daten in türkischen Datenbanken, in denen die Groß-/Kleinschreibung nicht berücksichtigt wird
Alternative türkische Kollatierung 1254TRKALT