はじめに
Snowflakeで数値や文字列の前にゼロを埋める(ゼロパディング)方法についてまとめます。
例えば、IDやコード番号の桁数を統一するために「5」を「00005」とするような処理が必要になるケースがあります。
LPAD関数を使う方法
基本構文
Snowflakeには LPAD
関数があり、指定した長さになるまで文字列の左側に指定の文字を埋めることができます。
LPAD(string, length, pad_string)
string
:ゼロ埋めを行いたい対象の文字列や数値。length
:最終的な文字列の長さ。pad_string
:埋める文字(通常は ‘0’)。
使用例
数値を文字列に変換し、ゼロ埋めする
数値をそのまま LPAD
に渡すとエラーになるため、TO_VARCHAR
を使って文字列に変換してから処理します。
SELECT LPAD(TO_VARCHAR(5), 5, '0') AS padded_value;
結果
+--------------+
| padded_value |
+--------------+
| 00005 |
+--------------+
カラムの値をゼロ埋めする
SELECT LPAD(TO_VARCHAR(id), 6, '0') AS padded_id FROM sample_table;
このSQLでは id
カラムの値を6桁に揃え、ゼロ埋めします。
FORMAT関数を使う方法
基本構文
FORMAT
関数を使用して、特定の形式で数値を文字列化できます。
SELECT FORMAT('%05d', number) AS padded_value;
%05d
:5桁の整数で、足りない分はゼロ埋め。number
:対象の数値。
使用例
SELECT FORMAT('%06d', 123) AS padded_value;
結果
+--------------+
| padded_value |
+--------------+
| 000123 |
+--------------+
これは LPAD
と似ていますが、FORMAT は数値型のままゼロ埋めを適用できる点が異なります。
RIGHT関数とREPEAT関数を使う方法
RIGHT
関数と REPEAT
関数を組み合わせてゼロ埋めする方法もあります。
SELECT RIGHT(REPEAT('0', 6) || TO_VARCHAR(id), 6) AS padded_id FROM sample_table;
REPEAT('0', 6)
:6桁のゼロ文字列を作成。|| TO_VARCHAR(id)
:元の数値を文字列に変換して結合。RIGHT(..., 6)
:右から6文字を取得してゼロ埋めを適用。
この方法は、動的に桁数を調整したい場合に便利です。
まとめ
方法 | 使い方 | 特徴 |
---|---|---|
LPAD | LPAD(TO_VARCHAR(id), 6, '0') | シンプルで使いやすい |
FORMAT | FORMAT('%06d', id) | 数値をそのまま処理可能 |
RIGHT + REPEAT | RIGHT(REPEAT('0', 6) || TO_VARCHAR(id), 6) | 柔軟な桁数調整が可能 |
どの方法を使うかは、用途に応じて選択するとよいです。
- シンプルに実装したいなら →
LPAD
- 数値のまま処理したいなら →
FORMAT
- 柔軟にカスタマイズしたいなら →
RIGHT + REPEAT