Oracle DatabaseまたはMySQLを使用している場合は、幸運にもLPAD()を使用できます。 およびRPAD() 左または右、あるいはその両方に特定の文字(または複数の文字)を含む文字列を埋めることができる関数。
ただし、SQL Server(より正確にはT-SQL)には、これらの関数は含まれていません。したがって、左のパディングが必要な場合は、即興で行う必要があります。
この記事では、SQLServerで先行ゼロを使用して数値をパディングするための4つのオプションについて説明します。したがって、ターン7のようなことを行うことができます 007に 。これらのオプションのうち3つは文字列で機能するため、テキストデータにパディングを適用することもできます。
方法1– FORMAT()関数を使用する
数値に先行ゼロを適用する必要がある場合は、このオプションだけで十分です。このオプションはFORMAT()を使用します 働き。この関数は、指定された形式の文字列として数値を返します。
SELECT FORMAT(7, '000');
結果:
007
この場合、0を使用します 該当する場合、先行ゼロで数値をフォーマットするためのフォーマット指定子。これは、多くのカスタムフォーマット指定子の1つにすぎません。カスタムフォーマット指定子を使用すると、数値のフォーマット方法を非常に正確に把握できます。
FORMAT()に注意してください 関数は数値と日時値専用です。したがって、実際の文字列にパディングを適用する必要がある場合は、読み進めてください。
方法2– RIGHT()関数を使用する
2番目のメソッドはRIGHT()を使用します 先行ゼロをいくつか追加した後、文字列の右端の部分のみを返す関数。
ここでは「数値」に先行ゼロを適用していますが、実際には数値の文字列表現です。したがって、数値ではなく文字列にパディングを適用する必要がある場合は、このメソッドが機能するはずです。
SELECT RIGHT('000' + '1234', 7); 結果:
0001234
7 最終結果の文字数を指定します(ゼロが追加された後)。
長さを短くする
したがって、その数を減らすと、先行ゼロの数が減ります。
SELECT RIGHT('000' + '1234', 6); 結果:
001234
長さを増やす
ただし、数を増やす場合は、必要な長さを構成するのに十分なゼロを指定していることを確認する必要があります。
SELECT RIGHT('000000' + '1234', 10); 結果:
0000001234
そうでなければ、これで終わります:
SELECT RIGHT('000' + '1234', 10); 結果:
0001234
数を減らす
また、結果の文字列の長さに十分な文字を指定しないと、数値が切り捨てられ、数値の右端の部分のみが取得されることに注意してください。
SELECT RIGHT('000' + '1234', 2); 結果:
34
したがって、この場合、最初の数値は切り捨てられ、先行ゼロは無視されました。
これは、結果がMySQLおよびOracleのLPAD()の結果と異なる1つのシナリオです。 働き。この関数は、最後の2桁ではなく、最初の2桁(パディングされていない)を生成します。このように:
SELECT LPAD(1234, 2, 0);
結果:
12
LPAD()のように動作するSQLServerソリューションが必要な場合 そのような場合は、これを試してください:
SELECT RIGHT(REPLICATE('0', 3) + LEFT('1234', 2), 2); 結果:
12
ただし、LEFT()を使用するだけで同じ結果が得られることに注意してください。 単独で機能する:
SELECT LEFT('1234', 2); 結果:
12
さらに、誰かが数字を短くしたい理由を考えるのに苦労しています(彼らがそれを埋めようとしていることを考えると)が、少なくともこれは考慮すべきことです。
方法3– RIGHT()とREPLICATE()の組み合わせを使用する
このメソッドは前のメソッドとほぼ同じですが、唯一の違いは、3つのゼロをREPLICATE()に置き換えるだけです。 機能:
SELECT RIGHT(REPLICATE('0', 3) + '1234', 7); 結果:
0001234
REPLICATE() 関数を使用すると、各ゼロ(または他の文字)を複数回入力する必要がなくなります。
ボーナスメソッド:メソッド4 – REPLACE()とSTR()の組み合わせを使用する
この方法は、以前の方法とはまったく異なる角度から来ています:
SELECT REPLACE(STR('1234', 6),' ','0'); 結果:
001234
ここでは、REPLACE()を使用します STR()と組み合わせて機能する 数値を特定の長さの文字列に変換してから、スペース文字をゼロに変換する関数。
注意すべき点の1つは、(前の例で行ったように)数字を短くすると、(短縮された)数字ではなく、一連のアスタリスクが表示されることです。
SELECT REPLACE(STR('1234', 2),' ','0'); 結果:
**