390 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
Unzul¨assige YEAR-Werte werden in 0000 umgewandelt.
7.2.3 Zeichenketten-Typen
Die Zeichenketten-Typen sind CHAR, VARCHAR, BLOB, TEXT, ENUM und SET. Dieser Abschnitt
beschreibt, wie diese Typen funktionieren, ihren Speicherbedarf und wie sie in Anfragen
benutzt werden.
7.2.3.1 Die CHAR- und VARCHAR-Typen
Die CHAR- und VARCHAR-Typen sind ¨ahnlich, unterscheiden sich aber in der Art, wie sie
gespeichert und a/jointfilesconvert/293675/bgerufen werden.
Die L¨ange einer CHAR-Spalte wird auf die L¨ange festgelegt, die Sie bei der Erzeugung der
Tabelle angeben. Die L¨ange kann zwischen 1 und 255 variieren. (Ab MySQL-Version 3.23
kann die L¨ange zwischen 0 und 255 liegen.) Wenn CHAR-Werte gespeichert werden, werden
sie am rechten Ende bis zur festgelegten L¨ange mit Leerzeichen aufgef¨ullt. Wenn CHAR-Werte
a/jointfilesconvert/293675/bgerufen werden, werden die Leerzeichen am Ende entfernt.
Werte in VARCHAR-Spalten sind Zeichenketten variabler L¨ange. Sie k¨onnen eine VARCHAR-
Spalte mit jeder L¨ange zwischen 1 und 255 deklarieren, genau wie f¨ur CHAR-Spalten. Im
Gegensatz zu CHAR werden VARCHAR-Werte jedoch nur mit so vielen Zeichen wie n¨otig gespe-
ichert, plus 1 Byte, um die L¨ange zu speichern. Die Werte werden nicht aufgef¨ullt; statt
dessen werden Leerzeichen am Ende b eim Speichern entfernt. (Diese Entfernung von Leerze-
ichen weicht von der ANSI-SQL-Spezifikation ab.)
Wenn Sie einer CHAR- oder VARCHAR-Spalte einen Wert zuweisen, der die maximale Spal-
tenl¨ange ¨uberschreitet, wird der Wert so zurecht geschnitten, das er passt.
Die unten stehende Tabelle stellt die Unterschiede zwischen den beiden Spaltentypen dar,
indem das Ergebnis der Speicherung unterschiedlicher Zeichenkettenwerte in CHAR(4)- und
VARCHAR(4)-Spalten gezeigt wird:
Wert CHAR(4) Speicherbedarf VARCHAR(4) Speicherbedarf
’’ ’ ’ 4 Bytes ’’ 1 Byte
’ab’ ’ab ’ 4 Bytes ’ab’ 3 Bytes
’abcd’ ’abcd’ 4 Bytes ’abcd’ 5 Bytes
’abcdefgh’ ’abcd’ 4 Bytes ’abcd’ 5 Bytes
Die Werte, die aus den CHAR(4)- und VARCHAR(4)-Spalten a/jointfilesconvert/293675/bgerufen werden, sind in jedem
Fall gleich, weil Leerzeichen am Ende von CHAR-Spalten beim Abruf entfernt werden.
Werte in CHAR- und VARCHAR-Spalten werden unabh¨angig von der Groß-/Kleinschreibung
sortiert und verglichen, es sei denn, beim Erzeugen der Tabelle wurde das BINARY-Attribut
festgelegt. Das BINARY-Attribut b edeutet, dass Spaltenwerte abh¨angig von der
Groß-/Kleinschreibung in
¨
Ubereinstimmung mit der ASCII-Reihenfolge der Maschine
sortiert und verglichen werden, auf der der MySQL-Server l¨auft. BINARY beeinflusst nicht,
wie die Spalte gespeichert oder a/jointfilesconvert/293675/bgerufen wird.
Das BINARY-Attribut ist ’klebrig’, das heißt, dass der gesamte Ausdruck als ein BINARY-Wert
verglichen wird, sobald eine BINARY-Spalte im Ausdruck benutzt wird.
MySQL ¨andert eventuell ’still’ den Typ von CHAR- oder VARCHAR-Spalten bei der Tabellen-
erzeugung. Siehe Abschnitt 7.5.3.1 [Silent column changes], Seite 463.
Kommentare zu diesen Handbüchern