Der CHAR-Datentyp speichert Zeichen von bis zu 32.767 Byte.
CHAR [ ( max-length [ CHAR | CHARACTER ] ) ]
max-length Die Maximallänge der Zeichenfolge. Wenn Bytelänge-Semantik verwendet wird (CHAR oder CHARACTER wird nicht als Teil der Länge angegeben), ist die Länge in Bytes, und sie muss im Bereich von 1 bis 32.767 liegen. Wenn keine Länge angegeben ist, ist ihr Wert "1".
Wenn Zeichenlängensemantik verwendet wird (CHAR oder CHARACTER als Teil der Länge angegeben wird), ist die Länge in Zeichen und Sie müssen max-length angeben. max-length kann bis zu 32767 Zeichen betragen.
Mehrbyte-Zeichen können als CHAR gespeichert werden, aber die deklarierte Länge bezieht sich auf Byte und nicht auf Zeichen, es sei denn es wird Zeichenlängensemantik verwendet.
CHAR kann auch als CHARACTER angegeben werden. Unabhängig von der verwendeten Syntax wird der Datentyp als CHAR beschrieben.
CHAR entspricht semantisch VARCHAR, auch wenn es sich um unterschiedliche Typen handelt. In SQL Anywhere ist CHAR ein Typ mit variabler Länge. In anderen relationalen Datenbankmanagementsystemen ist CHAR ein Typ mit fester Länge und Daten werden mit Leerzeichen auf max-length in Byte aufgefüllt. SQL Anywhere füllt gespeicherte Zeichendaten nicht mit Leerzeichen auf.
Wie CHAR-Spalten beschrieben werden, hängt ab von der verwendeten Client-Schnittstelle, von den verwendeten Zeichensätzen und davon, ob Zeichenlängensemantik verwendet wird. Zum Beispiel entspricht in Embedded SQL die beschriebene Länge der maximalen Byte-Anzahl im Clientzeichensatz. Wenn die beschriebene Länge größer wäre als 32767 Byte, würde die Spalte als Typ DT_LONGVARCHAR beschrieben. Die folgende Tabelle enthält einige Beispiele für Embedded SQL und die Ergebnisse, die bei einer DESCRIBE-Anweisung zurückgegeben werden:
Beschriebener Typ | Zeichensatz der Datenbank | Clientzeichensatz | Ergebnis der DESCRIBE-Anweisung |
---|---|---|---|
CHAR(10) | Windows-1252 | Windows-1252 | DT_FIXCHAR der Länge 10 |
CHAR(10) | UTF-8 | UTF-8 | DT_FIXCHAR der Länge 10 |
CHAR(10) | Windows-1252 | UTF-8 | DT_FIXCHAR der Länge 30 |
CHAR(20000) | Windows-31J | UTF-8 | DT_LONGVARCHAR |
CHAR(10 CHAR) | Windows-1252 | Windows-1252 | DT_FIXCHAR der Länge 10 |
CHAR(10 CHAR) | UTF-8 | UTF-8 | DT_FIXCHAR der Länge 40 |
Bei ODBC wird CHAR entweder als SQL_CHAR oder als SQL_VARCHAR beschrieben, abhängig von der Einstellung der Option odbc_distingish_char_and_varchar.
SQL/2008 Kompatibel mit SQL/2008. Im Standard ist die Zeichenlängensemantik die Standardeinstellung, während in SQL Anywhere die Bytelänge-Semantik die Standardeinstellung ist. Es gibt geringfügige Inkonsistenzen mit dem SQL-Standard aufgrund der Kollationsunterstützung ohne Berücksichtigung von Groß- und Kleinschreibung und der Unterstützung von SQL Anywhere für das Auffüllen mit Leerzeichen.
Der SQL/2008-Standard unterstützt explizite Zeichenlänge- oder Bytelänge-Semantik als SQL-Sprachenfunktion T061.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |