PostgreSQL で整数を文字列にキャストする

Joy Idialu 2022年8月18日
PostgreSQL で整数を文字列にキャストする

このチュートリアルでは、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つの方法について説明しました。

関連記事 - PostgreSQL String