PostgreSQLで数値を文字列に変換する方法|CAST・::text・TO_CHARの違いを解説

SQL

PostgreSQLでは、数値を文字列へ変換する方法が複数あります。

用途によって最適な方法が異なるため、「どれを使えばいいの?」と迷う人も多いでしょう。

この記事では、代表的な3つの方法を実際のSQL例付きで解説します。


1. CASTを使う方法

最も標準的な方法です。

SELECT CAST(12345 AS text);

結果

12345

ANSI SQLに準拠しているため、他のデータベースへ移行する可能性がある場合はこちらがおすすめです。


2. ::textを使う方法

PostgreSQLでは省略記法も利用できます。

SELECT 12345::text;

結果

12345

こちらはPostgreSQL独自の書き方ですが、短く書けるため実務では非常によく利用されています。


3. TO_CHARを使う方法

表示形式を指定したい場合はTO_CHARを使用します。

SELECT TO_CHAR(12345, '999,999');

結果

12,345

小数点やゼロ埋めも指定できます。

SELECT TO_CHAR(12.5, '0000.00');

結果

0012.50

それぞれの違い

方法用途おすすめ度
CAST単純な型変換★★★★★
::textPostgreSQL専用の簡易記法★★★★★
TO_CHAR表示形式を整えたい★★★★★

実務でよくある使用例

文字列結合

SELECT '商品番号:' || product_id::text
FROM products;

CSV出力前の整形

SELECT
TO_CHAR(price,'999,999') AS price
FROM products;

ゼロ埋め

SELECT TO_CHAR(id,'FM000000');

結果

000123

よくある質問

TO_CHARとCASTは何が違いますか?

CASTは単純な型変換です。

TO_CHARは表示形式を指定できるため、カンマ区切りやゼロ埋め、小数点以下の桁数調整などが可能です。

パフォーマンスは変わりますか?

単純な型変換ならCASTまたは::textの方がシンプルです。

表示形式を整える必要がない場合はCASTを利用するのがおすすめです。

実務ではどちらを使う?

PostgreSQLだけで利用するシステムなら

value::text

を使うケースが非常に多く見られます。

他DBとの互換性を重視するならCASTを選びましょう。


まとめ

PostgreSQLで数値を文字列へ変換する方法は次の3つです。

  • CAST:標準SQLで最も汎用的
  • ::text:PostgreSQLで最もよく使われる
  • TO_CHAR:表示形式を整えたい場合に最適

単純な型変換ならCASTまたは::text、表示形式を変更したい場合はTO_CHARを使い分けることで、読みやすく保守しやすいSQLになります。

コメント

タイトルとURLをコピーしました