Oracle Databaseを使用して数値を先行ゼロを持つようにフォーマットする場合、それを文字列に変換し、それに応じてフォーマットする必要があります。
TO_CHAR(number)
を使用できます 先行ゼロを含む数値をフォーマットする関数。
そして、おそらくあまり知られていない事実は、LPAD()
も使用できるということです 先行ゼロで数値を埋める関数。
TO_CHAR()
機能
TO_CHAR(number)
を使用する場合 関数、0
を使用します 先頭および/または末尾のゼロを含めるように要素をフォーマットします。
例:
SELECT TO_CHAR(7, 'fm000')
FROM DUAL;
結果:
007
これが9
と比較した場合です フォーマット要素:
SELECT
TO_CHAR(7, 'fm999') AS "9",
TO_CHAR(7, 'fm000') AS "0"
FROM DUAL;
結果:
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"
FROM DUAL;
結果:
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"
FROM DUAL;
結果:
Minus Sign Padded Not Padded _____________ _________ _____________ -007 007 007
LPAD()
機能
または、LPAD()
を使用することもできます 先行ゼロを含む数値をフォーマットする関数。
例:
SELECT LPAD(7, 3, '0')
FROM DUAL;
結果:
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"
FROM DUAL;
結果:
r1 r2 r3 r4 r5 _____ ________ ________ ________ ________ 7 00077 00777 07777 77777
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"
FROM DUAL;
結果:
r1 r2 r3 r4 r5 _____ ________ ________ ________ ________ 7 ...77 ..777 .7777 77777