T-SQLのInteger PadLeft関数 質問する

T-SQLのInteger PadLeft関数 質問する

次の表 A があります。

id
----
1
2
12
123
1234

値の左側にidゼロを埋め込む必要があります。

id
----
0001
0002
0012
0123
1234

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

ベストアンサー1

これがあなたが探しているものだと思います:

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% 機能するかどうかはわかりません (多少の調整が必要になる可能性があります) が、目的の出力を取得する方法の一般的な考え方は伝わります。

編集

コメントに記載されている懸念に対処するために...

@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が表示されます。

おすすめ記事