Cast einer Ganzzahl in einen String in PostgreSQL
In diesem Tutorial wird erläutert, wie Sie in PostgreSQL eine Ganzzahl in einen String umwandeln.
Cast einer Ganzzahl in einen String in PostgreSQL
Stellen Sie sich eine quiz_score
-Tabelle vor, die die Punktzahl jedes Teilnehmers in einem Quizspiel verfolgt. Die Punktzahl wird in dieser Tabelle als Zeichenfolge gespeichert, nicht als Ganzzahl.
id | player_id | score |
---|---|---|
1 | 1 | 54 |
2 | 2 | 72 |
3 | 3 | 52 |
4 | 4 | 55 |
5 | 5 | 93 |
6 | 6 | 72 |
7 | 7 | 55 |
8 | 8 | 64 |
9 | 9 | 87 |
10 | 10 | 81 |
Hier ist die CREATE
-Anweisung für die Tabelle:
CREATE TABLE quiz_score
(
id integer NOT NULL GENERATED ALWAYS AS IDENTITY,
player_id integer NOT NULL,
score text NOT NULL,
CONSTRAINT quiz_score_pkey PRIMARY KEY (id)
);
Und hier ist die INSERT
-Anweisung, um die Tabelle mit den Daten zu füllen:
INSERT INTO quiz_score (player_id, score)
VALUES
(1, 54),
(2, 72),
(3, 52),
(4, 55),
(5, 93),
(6, 72),
(7, 55),
(8, 64),
(9, 87),
(10, 81);
Wenn wir gebeten werden, den oder die Spieler zu finden, die eine bestimmte Punktzahl hatten, und diese Punktzahl, die wir erhalten, vom Typ Integer und nicht vom Typ String ist, wie in der Tabelle gespeichert, wird eine Abfrage wie diese:
SELECT * FROM quiz_score WHERE score = 72;
würde folgenden Fehler ausgeben:
ERROR: operator does not exist: text = integer
HINT: No operator matches the given name and argument types. You might need to add explicit type casts.
Nach dem gegebenen Hinweis müssten wir die angegebene Punktzahl, die vom Typ Integer to String ist, umwandeln, wie hier gezeigt:
SELECT * FROM quiz_score WHERE score = 72::text;
Es wird kein Fehler ausgegeben und das Ergebnis wird wie folgt angegeben:
id | player_id | score |
---|---|---|
2 | 2 | 72 |
6 | 6 | 72 |
Eine andere Möglichkeit, eine Ganzzahl in einen String umzuwandeln, ist wie folgt:
SELECT * FROM quiz_score WHERE score = cast(72 as text);
In diesem Tutorial wurden zwei Möglichkeiten zum Umwandeln einer Ganzzahl in eine Zeichenfolge erläutert.