PostgreSQL で整数を文字列にキャストする
Joy Idialu
2022年8月18日
このチュートリアルでは、PostgreSQL で整数を文字列にキャストする方法について説明します。
PostgreSQL で整数を文字列にキャストする
クイズゲームの各参加者のスコアを追跡する quiz_score
テーブルについて考えてみます。スコアは、整数ではなく文字列としてこのテーブルに格納されます。
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 |
テーブルの CREATE
ステートメントは次のとおりです。
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)
);
そして、テーブルにデータを入力するための INSERT
ステートメントは次のとおりです。
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);
特定のスコアを持つ 1 人または複数のプレーヤーを見つけるように求められ、このスコアが与えられるのは整数型であり、テーブルに格納されている文字列型ではない場合、次のようなクエリが実行されます。
SELECT * FROM quiz_score WHERE score = 72;
次のエラーが発生します。
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.
与えられたヒントに従って、次に示すように、整数型の与えられたスコアを文字列にキャストする必要があります。
SELECT * FROM quiz_score WHERE score = 72::text;
エラーはスローされず、結果は次のようになります。
id | player_id | score |
---|---|---|
2 | 2 | 72 |
6 | 6 | 72 |
整数を文字列にキャストする別の方法は、次のように与えられます。
SELECT * FROM quiz_score WHERE score = cast(72 as text);
このチュートリアルでは、整数を文字列にキャストする 2つの方法について説明しました。