1. ホーム
  2. string

[解決済み] T-SQLのPadLeft関数

2022-07-16 01:50:22

質問

次の表Aがあります。

id
----
1
2
12
123
1234

を左詰めにする必要があります。 id の値をゼロで左詰めする必要があります。

id
----
0001
0002
0012
0123
1234

どうすれば実現できるのでしょうか?

どのように解決するのですか?

私はこれがあなたが探しているものであるかもしれないと信じています。

SELECT padded_id = REPLACE(STR(id, 4), SPACE(1), '0') 

FROM tableA

または

SELECT REPLACE(STR(id, 4), SPACE(1), '0') AS [padded_id]

FROM tableA

2番目の例の構文はテストしていません。これが100%うまくいくかどうかはわかりません - 若干の調整が必要かもしれませんが - 希望する出力を得る方法の一般的なアイデアを伝えています。

EDIT

コメントで挙げられた懸念に対応するため...

@pkr298 - はい、STRは数字にのみ作用します...。OP のフィールドは ID です...したがって、数字のみです。

@Desolator - もちろんそれはうまくいきません...最初のパラメータは6文字です。 次のようなことができます。

SELECT REPLACE(STR(id,
(SELECT LEN(MAX(id)) + 4 FROM tableA)), SPACE(1), '0') AS [padded_id] FROM tableA

これは理論的にはゴールポストを移動させるはずです...数字が大きくなればなるほど、常に機能するはずです...1でも123456789でも関係なく...

つまり、最大値が123456であれば、0000123456と表示され、最小値が1であれば、0000000001と表示されます。