以下は、さまざまな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