一部のDBMSにはLPAD()
があります およびRPAD()
先頭と末尾のゼロで数値を埋めるために使用できる関数。
SQLServerにはそのような機能はありません。ただし、それでも先頭/末尾のゼロで数値を埋めることができます。
非整数
まず、非整数を見てみましょう:
SELECT
FORMAT(7, '000.00') AS "1",
FORMAT(17, '000.00') AS "2",
FORMAT(73.5, '000.00') AS "3";
結果:
+--------+--------+--------+ | 1 | 2 | 3 | |--------+--------+--------| | 007.00 | 017.00 | 073.50 | +--------+--------+--------+
ここでは、FORMAT()
を使用します 数値をフォーマットする関数。最初の引数は数値で、2番目の引数はフォーマット文字列です。この関数は、結果をフォーマットされた文字列として出力します。
上記の例では、フォーマット文字列はカスタム数値フォーマット指定子で構成されており、元の数値に数字がない場所にゼロが追加された元の数値になります。フォーマット文字列には、必要な数のゼロを使用できます。
SELECT
FORMAT(7, '00000.0000') AS "1",
FORMAT(17, '00000.0000') AS "2",
FORMAT(73.5, '00000.0000') AS "3";
結果:
+------------+------------+------------+ | 1 | 2 | 3 | |------------+------------+------------| | 00007.0000 | 00017.0000 | 00073.5000 | +------------+------------+------------+
整数
元の数値が整数の場合は、もう少し作業を行う必要があります。
SELECT
REPLACE(FORMAT(7, '00000.0000', 'en-US'), '.', '') AS "1",
REPLACE(FORMAT(17, '00000.0000', 'en-US'), '.', '') AS "2",
REPLACE(FORMAT(73.5, '00000.0000', 'en-US'), '.', '') AS "3";
結果:
+-----------+-----------+-----------+ | 1 | 2 | 3 | |-----------+-----------+-----------| | 000070000 | 000170000 | 000735000 | +-----------+-----------+-----------+
ここでは、REPLACE()
を使用しました 数値がフォーマットされた後に小数点を削除する関数。
en-US
を明示的に使用しました 小数点記号がピリオド/ピリオドであり、コンマなどの別の文字ではないことを確認するための(オプションの)3番目の引数として。一部のロケールでは、小数点記号としてコンマを使用します。関数内からロケールを明示的に指定しない場合は、現在のセッションのロケールが使用されます。関数内からロケールを明示的に指定すると、現在のセッションのロケールが使用されないため、置換操作に干渉することはありません。
Azure SQL Edge
Azure SQL Edgeは、SQL Serverデータベースエンジンの限定された実装に基づいて構築されているため、SQLServerで使用できるほとんどのT-SQL関数をサポートしています。ただし、執筆時点では、SQLEdgeはT-SQLFORMAT()
をサポートしていません。 機能。
別の方法(SQL Serverでも機能します)については、AzureSQLEdgeで先頭と末尾のゼロを追加する方法を参照してください。