PostgreSQLでは、TO_CHAR()
を使用できます 数値に先行ゼロを追加する関数。この関数は、指定した(オプションの)形式を使用して、数値を文字列に変換します。
もう1つのオプションは、LPAD()
を使用することです。 先行ゼロで数値を埋める関数。
TO_CHAR()
機能
TO_CHAR()
を使用する場合 関数、0
を使用します 先頭および/または末尾のゼロを含めるように要素をフォーマットします。
例:
SELECT TO_CHAR(7, 'fm000');
結果:
007
これが9
と比較した場合です フォーマット要素:
SELECT
TO_CHAR(7, 'fm999') AS "9",
TO_CHAR(7, 'fm000') AS "0";
結果:
9 | 0 ---+----- 7 | 007
先行ゼロの数は、0
の数によって決まります。 フォーマット要素と数値の桁数:
SELECT
TO_CHAR(77, 'fm0') AS "r1",
TO_CHAR(77, 'fm00000') AS "r2",
TO_CHAR(777, 'fm00000') AS "r3",
TO_CHAR(7777, 'fm00000') AS "r4",
TO_CHAR(77777, 'fm00000') AS "r5";
結果:
r1 | r2 | r3 | r4 | r5 ----+-------+-------+-------+------- # | 00077 | 00777 | 07777 | 77777
fm
format修飾子は、結果に含まれる可能性のある先頭または末尾のパディングを抑制します。たとえば、数値が負の場合、マイナス記号が前に付けられます。ただし、数値が正の場合、記号は含まれず、プラス記号があったはずの場所にスペースが表示されます。
これを示す例を次に示します。
SELECT
TO_CHAR(-7, '000') AS "Minus Sign",
TO_CHAR(7, '000') AS "Padded",
TO_CHAR(7, 'fm000') AS "Not Padded";
結果:
Minus Sign | Padded | Not Padded ------------+--------+------------ -007 | 007 | 007
LPAD()
機能
または、LPAD()
を使用することもできます 先行ゼロで数値を埋める関数:
SELECT LPAD('7', 3, '0');
結果:
007
別の例:
SELECT
LPAD('77', 1, '0') AS "r1",
LPAD('77', 5, '0') AS "r2",
LPAD('777', 5, '0') AS "r3",
LPAD('7777', 5, '0') AS "r4",
LPAD('77777', 5, '0') AS "r5";
結果:
r1 | r2 | r3 | r4 | r5 ----+-------+-------+-------+------- 7 | 00077 | 00777 | 07777 | 77777
この関数では、数値を文字列として渡す必要があることに注意してください。したがって、最初に数値を文字列に変換する必要があります。パディング文字も文字列である必要があります。
したがって、次のようなことを行う必要があるかもしれません:
SELECT LPAD(CAST(7 AS varchar), 3, '0');
結果:
007
LPAD()
のメリットの1つ 前の方法に比べて、結果を他の文字の前に付けることができます。先行ゼロである必要はありません。
SELECT
LPAD('77', 1, '.') AS "r1",
LPAD('77', 5, '.') AS "r2",
LPAD('777', 5, '.') AS "r3",
LPAD('7777', 5, '.') AS "r4",
LPAD('77777', 5, '.') AS "r5";
結果:
r1 | r2 | r3 | r4 | r5 ----+-------+-------+-------+------- 7 | ...77 | ..777 | .7777 | 77777