Die Syntax für ein National-Literal ist wie folgt definiert:
national_literal ::=
{
} |
uc-zeichen ::= {
zeichen |
esc 4hex |
esc+ 6hex |
esc esc }
zeichen
Ein Unicode-Zeichen, das auch im Zeichensatz EDF03IRV enthalten ist. Soll eine Zeichenkette ein Hochkomma (') enthalten, so müssen Sie das Hochkomma verdoppeln. Das verdoppelte Hochkomma gilt als ein Zeichen.
4hex
4hex ist eine Gruppe von 4 aufeinanderfolgenden Sedezimalzeichen und stellt eine UTF-16 Code Unit dar, die im Bereich 0000 bis FFFF liegen muss. (Allerdings sind die UTF-16 Code Units FFFE und FFFF sowie die Code Units im Bereich FDD0 - FDEF sogenannte Noncharacters und dürfen in SESAM/SQL nicht in Literalen verwendet werden, siehe Unicode-Konzept in SESAM/SQL im „Basishandbuch“). Bei der Angabe von 4hex können die Sedezimalziffern A bis F auch mit Kleinbuchstaben geschreiben werden.
Beispiel
NX'004100420043'
für die Zeichenkette 'ABC'.
esc 4hex
Sedezimale Darstellung eines Code Points durch das Entwertungszeichen esc und (ohne Leerzeichen dazwischen) einem 4-stelligen sedezimalen Wert 4hex , der im Bereich 0000 bis FFFD liegen muss. Die Angabe esc muss genau so geschrieben werden, wie in der UESCAPE-Klausel angegeben. Bei der Angabe von 4hex können die Sedezimalziffern A bis F auch mit Kleinbuchstaben geschrieben werden..
Beispiel
U&'\00DF'
für das Zeichen 'ß'
U&'\0395\03BB\03BB\03B7\03BD\03B9\03BA\03AC hei\00DFt Griechisch'
für die Zeichenkette „ Ελληνικά
heißt Griechisch“
esc+ 6hex
Sedezimale Darstellung eines Code Points durch das Entwertungszeichen esc, gefolgt von „+“ und (ohne Leerzeichen dazwischen) einem 6-stelligen sedezimalen Wert 6hex, der im Bereich 000000 bis 10FFFD liegen muss. (Die Code Points 10FFFE und 10FFFF sowie die Code Points aus den Bereichen 0xFFFE und 0xFFFF (x ist eine Sedezimalzahl) sind sogenannte Noncharacters und dürfen in SESAM/SQL nicht in Literalen verwendet werden, siehe Unicode-Konzept in SESAM/SQL im „ Basishandbuch“). Die Angabe esc muss genau so geschrieben werden, wie in der UESCAPE-Klausel angegeben. Bei der Angabe von 6hex können die Sedezimalziffern A bis F auch mit Kleinbuchstaben geschrieben werden..
Beispiel
U&'\+0000DF'
für das Zeichen 'ß'.
esc esc
Mit esc esc (ohne Leerzeichen dazwischen) können Sie das Entwertungszeichen esc entwerten, sodass diese Zeichenfolge ein Zeichen esc darstellt.
Beispiel
U&'\\'
für das Zeichen '\'
UESCAPE '
esc '
Angabe eines Entwertungszeichens. esc kann ein beliebiges alphanumerisches Zeichen mit Ausnahme von Pluszeichen, Anführungszeichen ("), Hochkomma (') und Leerzeichen sein.
Wenn UESCAPE '
esc '
nicht angegeben wird, dann wird der Gegenschrägstrich (\) als Standardwert verwendet.
Der Datentyp eines National-Literals ist NCHAR(cu_länge). cu_länge ist die Anzahl der Code Units (1 Code Unit in UTF-16 = 2 Byte). Die Zeichenketten dürfen maximal 128 Code Units lang sein. Zeichenketten der Länge 0 sind als Literale erlaubt, obwohl es nicht möglich ist, einen Datentyp NCHAR(0) zu definieren (siehe Abschnitt „Zeichenketten"). Der Datentyp ist dann NVARCHAR(0).
Für die Darstellung eines Code Points in UTF-16 wird 1 Code Unit benötigt, außer bei Code Points, die im Bereich 010000 bis 10FFFD enthalten sind. Diese Code Points benötigen zwei Code Units.
Die verschiedenen Formen vom National-Datentyp können konkateniert werden wie z.B. bei „Preis in €“:
N'Preis in '||NX'20AC'
N'Preis in '||U&'\20AC'
„||“ muss als Operator für die Konkatenation verwendet werden.
trenner
Trenner, der zwei Teilketten voneinander trennt (siehe Abschnitt „Trenner"). Setzt sich ein National-Literal aus zwei oder mehreren Teilketten zusammen, müssen benachbarte Teilketten durch einen oder mehrere Trenner getrennt sein. Mindestens einer der Trenner muss ein Übergang zur nächsten Zeile sein.
Das Ergebnis eines aus Teilketten zusammengesetzten Zeichenketten-Literals ist die Konkatenation der beteiligten Teilketten, ohne dass dafür der Operator für Konkatenation geschrieben werden muss.