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