HOWTO · PostgreSQL

Cast einer Ganzzahl in einen String in PostgreSQL

In diesem Tutorial wird erläutert, wie Sie in PostgreSQL eine Ganzzahl in einen String umwandeln.

Auf dieser Seite

Um eine Ganzzahl in PostgreSQL in eine Zeichenkette umzuwandeln, casten Sie sie mit CAST(value AS text) oder der PostgreSQL-Syntax value::text in den Typ text. Verwenden Sie eine der beiden Formen, wenn eine Abfrage einen Textwert benötigt; nutzen Sie CONCAT, wenn Sie Text und Werte anderer Typen verbinden möchten. Die folgenden SQL-Beispiele zeigen die Syntax, enthalten aber keine Laufzeitausgabe.

Eine Ganzzahl mit CAST in Text umwandeln

CAST ist standardisierte SQL-Syntax und macht den Ausgangs- und Zieltyp ausdrücklich kenntlich. Zum Beispiel ist SELECT CAST(123 AS text) AS string_value; so formuliert, dass ein Textwert mit dem Inhalt 123 entsteht. Ersetzen Sie das Ganzzahlliteral durch eine Spalte oder einen Ausdruck, etwa CAST(order_id AS text), wenn Ihre Abfrage diesen Wert als Text benötigt. PostgreSQL bezeichnet seinen Zeichentyp als text; „Zeichenkette“ ist der allgemeine Begriff für den dargestellten Wert.

PostgreSQLs Cast-Operator ::

PostgreSQL unterstützt auch den knappen Cast-Operator ::. SELECT 123::text AS string_value; wandelt dieselbe Ganzzahl in denselben Typ um wie die CAST-Form. Wählen Sie die ausgeschriebene Form, wenn sie in gemeinsam genutztem SQL besser verständlich ist, oder den Operator, wenn er zur umgebenden PostgreSQL-Abfrage passt. Beide drücken eine Typumwandlung aus; keine der beiden Formen gibt Formatierungsvorgaben für Trennzeichen, Auffüllzeichen oder andere Darstellungsweisen an.

Eine Textspalte und eine Ganzzahl in einer WHERE-Klausel vergleichen

Angenommen, quiz_score.score ist als text definiert, während der Vergleichswert eine Ganzzahl ist. Ein direkter Vergleich von score mit 100 mischt Text- und Ganzzahltypen. Casten Sie die Ganzzahl in Text, damit beide Operanden kompatible Typen haben: SELECT score FROM quiz_score WHERE score = CAST(100 AS text);. Die PostgreSQL-Kurzform lautet WHERE score = 100::text.

Bei diesem Vergleich wird die Spalte als Text behandelt. Die Textwerte 100 und 0100 sind beispielsweise verschieden, auch wenn beide dieselbe Zahl darstellen können. Wenn Sie numerisch vergleichen möchten, wandeln Sie die Spalte nur dann um, wenn ihre Werte gültige Ganzzahlen sind; andernfalls kann die Umwandlung fehlschlagen. Ist eine Spalte bereits numerisch, vergleichen Sie sie mit einem numerischen Wert, statt sie in Text umzuwandeln.

Text und Zahlen mit CONCAT verbinden

CONCAT verbindet Argumente und wandelt Nicht-Text-Argumente für das gemeinsame Ergebnis in Text um. Zum Beispiel erstellt SELECT CONCAT('The number is ', 123); den Text The number is 123. Das eignet sich zum Zusammensetzen einer Beschriftung oder Nachricht, ist aber keine dritte Schreibweise für einen eigenständigen Cast: Verwenden Sie CAST oder ::text, wenn die Abfrage die umgewandelte Ganzzahl selbst benötigt. In PostgreSQL ignoriert CONCAT NULL-Argumente. Wenn Sie einen Ersatzwert angeben möchten, verwenden Sie COALESCE(value::text, 'fallback'), wenn value einen Nicht-Text-Typ haben kann; der Cast sorgt dafür, dass beide Argumente von COALESCE denselben Typ haben.

FAQ

Was ist der Unterschied zwischen CAST und ::? CAST(value AS text) ist standardisierte SQL-Syntax; value::text ist eine PostgreSQL-spezifische Kurzform. Beide wandeln den Wert in Text um.

Können auch andere Werte in Text umgewandelt werden? PostgreSQL unterstützt Casts für viele Typen, darunter Datums- und boolesche Werte. Die resultierende Textdarstellung hängt vom Ausgangstyp und dessen Ausgabedarstellung ab.

Kann ich einen Cast in einer WHERE-Klausel verwenden? Ja. Casten Sie den ganzzahligen Parameter oder Ausdruck in Text, wenn Sie ihn mit einer Textspalte vergleichen, etwa mit score = 100::text. Achten Sie darauf, dass die verglichenen Werte dieselbe beabsichtigte Bedeutung und denselben passenden Typ haben.