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 | 単純な型変換 | ★★★★★ |
| ::text | PostgreSQL専用の簡易記法 | ★★★★★ |
| 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になります。



コメント