Zeichenfolgenliterale in SQL
Einführende Beispiele
Wir haben Zeichenfolgenliteral bereits in Eingaben wie der folgenden verwendet.
- Konsole (MySQL, E92, C99, C03)
INSERT INTO LISTE ( I ) VALUES ( '1' );
Query OK, 1 row affected (0.00 sec)
Oben gibt das Zeichenfolgenliteral »'1'« die in eine Tabelle einzufügenden Zeichenfolge »1« an.
In dieser Lektion soll der Begriff des Zeichenfolgenliterals noch einmal ausdrücklich definiert werden, aber sie enthält wenig wirklich Neues!
Zeichenfolgen
Eine Zeichenfolge ist eine Folge von Zeichen.
Beispielsweise ist »Mai« eine Zeichenfolge mit drei Zeichen: »M«, »a« und »i«.
- Morphologisches Diagramm
Zeichenfolge
|-|--->.------------------.--->|-|
^ |
| .---------. |
'---| Zeichen |<---'
'---------'
Die Syntax eines Zeichenfolgenliterals
Das Zeichen »'« wird Apostroph genannt („der Apostroph“).
Ein Zeichenfolgenliteral ist eine Folge von Zeichen, die in Apostrophe eingeschlossen ist.
- Morphologisches Diagramm
Zeichenfolgenliteral
.-. .--------------. .-.
|-|--->( ' )--->| Zeichenfolge |--->( ' )--->|-|
'-' '--------------' '-'
Beispielsweise ist »'Mai'« ein Zeichenfolgenliteral mit fünf Zeichen: Apostroph, »M«, »a«, »i« und wieder Apostroph.
Solche Zeichenfolgenliterale werden im weiteren Verlauf dieses Kurses immer wieder verwendet werden werden.
Wir haben Zeichenfolgenliterale bisher schon bei der Angabe einer einzufügenden Zeichenfolge in INSERT-Anweisungen wie »INSERT INTO A ( B ) VALUES ( 'C' );« verwendet.
Zeichenfolgenliterale als lexikalische Einheiten
Ein Zeichenfolgenliteral ist eine einzige lexikalische Einheit. Da Wörter und Sonderzeichen (außerhalb von Zeichenfolgenliteralen) ebenfalls jeweils eine einzige lexikalische Einheit sind, besteht die INSERT-Anweisungen »INSERT INTO A ( B ) VALUES ( 'C D' );« beispielsweise aus den folgenden lexikalischen Einheiten (jeweis eine lexikalische Einheit pro Zeile).
- Lexikalische Einheiten der Anweisung »INSERT INTO A ( B ) VALUES ( 'C D' );«
INSERT
INTO
A
(
B
)
VALUES
(
'C D'
)
;
Leerzeichen und Zeilenenden innerhalb von Zeichenfolgenliteralen gelten also nicht als Leerraum.
Der Typ eines Zeichenfolgenliterals
Einem Zeichenfolgenliteral wird ein Typ zugeordnet, der beschreibt, daß es sich um eine Zeichenfolge handelt und welche Länge sie hat.
Der Typ des Zeichenfolgenliterals »'ABC'« ist ›VARCHAR(3)‹, also „eine Folge von drei Zeichen“.
Der Wert eines Zeichenfolgenliterals
Einem Zeichenfolgenliteral wird ein Wert zugeordnet.
Der Wert eines Zeichenfolgenliterals ist eine Zeichenfolge, nämlich die zwischen den Apostrophen befindliche Zeichenfolge.
So ist der Wert des Zeichenfolgenliterals »'ABC'« beispielsweise die Zeichenfolge »ABC«.
Das Zeichenfolgenliteral »'ABC'« stellt also die Zeichen »ABC« dar, es steht im Quelltext für diese Zeichenfolge.
- Zeichenfolgenliteral
'ABC'
- Wert des Zeichenfolgenliterals »'ABC'« (Zeichenfolge)
ABC
Beispiele für Zeichenfolgenliterale
Die Zeichenfolge mit einem Zeichen
Auch eine Zeichenfolge mit nur einem Zeichen gilt als eine Zeichenfolge.
- Zeichenfolgenliteral
'A'
- Zeichenfolge (ein Zeichen)
A
- Skript (MySQL )
DROP SCHEMA S; CREATE SCHEMA S; USE S;
CREATE TABLE LISTE ( I VARCHAR ( 255 ));INSERT INTO LISTE ( I ) VALUES ( 'A' );
SELECT * FROM LISTE;
+------+
| I |
+------+
| A |
+------+
Die leere Zeichenfolge
Sogar eine Folge ohne Schriftzeichen gilt als Zeichenfolge, da sie als eine Zeichenfolge mit null Zeichen interpretiert wird.
- Zeichenfolgenliteral (leer)
''
- Zeichenfolge (leer, also gar kein Zeichen!)
- Skript (MySQL )
DROP SCHEMA S; CREATE SCHEMA S; USE S;
CREATE TABLE LISTE ( I VARCHAR ( 255 ));INSERT INTO LISTE ( I ) VALUES ( '' );
SELECT * FROM LISTE;
+------+
| I |
+------+
| |
+------+
Zeilenende in Zeichenfolgen (MySQL )
Es ist möglich, im Klienten von MySQL ein Zeichenfolgenliteral einzugeben, das ein Zeilenende enthält, indem an der Stelle, an der das Zeilenende erscheinen soll, die Eingabetaste ↵ getippt wird.
Danach erscheint dann am Anfang der nächsten Zeile der Apostroph-prompt, und die Eingabe des Zeichenfolgenliterals kann fortgesetzt werden.
- Prompt für Zeichenfolgenliterale
'>
Die sich ergebende Zeichenfolge enthält dann an den Stellen ein Zeilenende, an der das Zeichenfolgenliteral Zeilenenden enthielt.
- Zeichenfolgenliteral
'a
b'- Zeichenfolge
a
b
Die Ausgabe von Tabellen mit mehrzeiligen Zeichenfolgen kann im Klienten allerdings unübersichtlich werden.
- Skript (MySQL )
DROP SCHEMA S; CREATE SCHEMA S; USE S;
CREATE TABLE LISTE ( I VARCHAR ( 255 ));INSERT INTO LISTE ( I ) VALUES ( 'a
b' );SELECT * FROM LISTE;
+------+
| I |
+------+
| a
b |
+------+
Ersatzdarstellungen in Zeichenfolgenliteralen (MySQL )
Bestimmte Zeichen werden in Zeichenfolgenliteralen durch zwei Zeichen dargestellt. Diese beiden Zeichen stehen dann aber für ein einziges Zeichen in der sich ergebenden Zeichenfolge.
- Zeichenfolgenliteral (21 Zeichen)
'a\'b\"c\\d\ne\rf\tg'
- Zeichenfolge (11 Zeichen), die Pfeile stehen für „Zeilenvorschub“ beziehungsweise „Wagenrücklauf“)
- a'b"c\d↓e←f
- Skript (MySQL )
DROP SCHEMA S; CREATE SCHEMA S; USE S;
CREATE TABLE LISTE ( I VARCHAR ( 255 ));INSERT INTO LISTE ( I ) VALUES ( 'a\'b\"c\\d\ne\rf\tg' );
SELECT * FROM LISTE;
+---------------+
| I |
+---------------+
| a'b"c\d
f g |
+---------------+- Ersatzdarstellungen
Ersatzdarstellung Zeichen
\' ein Apostroph
'' ein Apostroph
\" ein Anführungszeichen
\\ ein inverser Schraegstrich\n Das Unicode-Zeichen "linefeed" (Zeilenvorschub)
\r Das Unicode-Zeichen "carriage return" (Wagenruecklauf)
\t Das Unicode-Zeichen "tab" (tabulator)\0 Das Unicode-Zeichen "NUL"
\b Das Unicode-Zeichen "backspace"
\Z Das Unicode-Zeichen mit der Kennzahl 26
Verbundene Zeichenfolgenliterale (MySQL )
Mehrere aufeinanderfolgende Zeichenfolgenliterale die durch Leerraum voneinander getrennt sind, können wie ein Zeichenfolgenliteral verwendet werden, dessen Zeichenfolge sich aus der Hintereinanderschreibung der einzelnen Zeichenfolgenliterale ergibt.
- Zeichenfolgenliterale
'a' 'b'
'c'- Zeichenfolge
abcd
- Skript (MySQL )
DROP SCHEMA S; CREATE SCHEMA S; USE S;
CREATE TABLE LISTE ( I VARCHAR ( 255 ));INSERT INTO LISTE ( I ) VALUES ( 'a' 'b'
'c' );SELECT * FROM LISTE;
+------+
| I |
+------+
| abc |
+------+
Übungsfragen _
Textangaben in chevrons (/ʃə.vʁɔ̃s/), also den Zeichen "»" und "«", beziehen sich immer auf den Text zwischen diesen chevrons. Beispielsweise umfaßt der Text »abc« drei Zeichen (nicht fünf).
? Übungsfrage _
Wie viele Zeichen hat die vom Zeichenfolgenliteral »'ab'« dargestellte Zeichenfolge ?
? Übungsfrage _
Wie viele Zeichen hat das Zeichenfolgenliteral »'ab'« selber (als Zeichenfolgenliteral betrachtet)?