以下は、さまざまなDBMSを使用して、SQLの数値に先行ゼロを追加する例です。
Oracle
OracleにはTO_CHAR(number)
があります 数値に先行ゼロを追加できる関数。結果を指定された形式の文字列として返します。
SELECT TO_CHAR(7, '000')
FROM DUAL;
結果:
007
0
format要素は、先行ゼロを出力するものです。先行ゼロが必要ない場合は、9
を使用できます。 。
0
の比較は次のとおりです および9
私が何を意味するかを示すために:
SELECT
TO_CHAR(1234.456, '000G000D00') AS "0",
TO_CHAR(1234.456, '999G999D99') AS "9"
FROM DUAL;
結果:
0 9 ______________ ______________ 001,234.46 1,234.46
G
グループセパレータとD
用です 小数点記号用です。完全なリストについては、この数値形式要素のリストを参照してください。
OracleにはLPAD()
もあります 先行ゼロ(またはその他の文字)で数値を埋めることができる関数。例については、Oracleで先行ゼロを使用して数値をフォーマットする2つの方法を参照してください。
PostgreSQL
PostgreSQLにはTO_CHAR()
もあります 関数であり、同じ名前のOracleの関数のように機能します:
SELECT TO_CHAR(7, '000');
結果:
007
0
の比較は次のとおりです および9
:
SELECT
TO_CHAR(1234.456, '000G000D00') AS "0",
TO_CHAR(1234.456, '999G999D99') AS "9";
結果:
0 | 9 -------------+------------- 001,234.46 | 1,234.46
PostgreSQLでこの関数で使用できるテンプレートパターンの完全なリストについては、Postgresの数値フォーマット用のテンプレートパターンと修飾子を参照してください。
Oracleと同様に、PostgreSQLにもLPAD()
があります。 先行ゼロで数値を埋めることができる関数。例については、PostgreSQLで先行ゼロを追加する2つの方法を参照してください。
MySQL
MySQLにはLPAD()
があります 文字列または数値の左側に、選択した文字または一連の文字を埋め込むことができる関数。したがって、これを使用して数値をゼロで埋めることができます。
SELECT LPAD(7, 3, 0);
結果:
007
幸い、数値を数値タイプとして渡すことができるため、最初に文字列に変換する必要はありません。
詳細については、MySQLの数値に先行ゼロを追加する方法を参照してください。
MariaDB
MySQLと同様に、MariaDBにもLPAD()
があります 文字列または数値の左側に、選択した文字または一連の文字を埋め込むことができる関数:
SELECT LPAD(7, 3, 0);
結果:
007
また、MySQLと同様に、数値を数値タイプとして渡すことができるため、最初に文字列に変換する必要はありません。
詳細については、MariaDBで先行ゼロを使用して数値を埋める方法を参照してください。
SQL Server
SQLServerにはFORMAT()
があります フォーマット文字列を使用して数値をフォーマットできる関数:
SELECT FORMAT(7, '000');
結果:
007
これは、グループ区切り文字と小数点記号付きです:
SELECT FORMAT(1234, '0,000.00');
結果:
1,234.00
詳細については、SQLServerでの先頭と末尾のゼロの追加を参照してください。
SQLite
SQLiteにはPRINTF()
があります 数値に先行ゼロを追加するために使用できる関数:
SELECT PRINTF('%03d', 7);
結果:
007
説明については、SQLiteで先行ゼロを使用して数値をフォーマットする方法を参照してください。
更新 :SQLite 3.38.0(2022年2月22日リリース)はPRINTF()
に名前を変更しました FORMAT()
への関数 。元のPRINTF()
名前は、下位互換性のためにエイリアスとして保持されます。
したがって、上記の例は次のように変更できます。
SELECT FORMAT('%03d', 7);
結果:
007