7桁以上の数字が必要です。例えば:
0000001
123456789
0012345
すべて有効です。長さが7未満の場合にのみ、数値に0を埋め込む必要があります。SQLServerでこれを行うにはどうすればよいですか。私が得た最善の方法は、長さが7未満の場合に数値を埋めることですが、それを超えると、代わりに数値が切り捨てられ始めます。
7桁以上の数字が必要です。例えば:
0000001
123456789
0012345
すべて有効です。長さが7未満の場合にのみ、数値に0を埋め込む必要があります。SQLServerでこれを行うにはどうすればよいですか。私が得た最善の方法は、長さが7未満の場合に数値を埋めることですが、それを超えると、代わりに数値が切り捨てられ始めます。
SELECT CASE WHEN LEN(CONVERT(VARCHAR(12), column)) > 7 THEN
CONVERT(VARCHAR(12),column) ELSE
RIGHT('0000000' + CONVERT(VARCHAR(12), column), 7) END
FROM dbo.table;
こんにちはこれをチェックしてください。
declare @num table(num varchar(10))
insert into @num
VALUES('0000001'),('123456789'),('0012345'),('123'),('11')
select CASE when len(num) < 7 then REPLICATE('0',(7-len(num)))+num else num END from @num
アーロン・ベルトランは私をそれに打ち負かしました。
キャラクターとそれを繰り返す必要がある回数の両方をカプセル化することも役立つかもしれないことを付け加えたいと思います。そうすれば、将来いつか変更する必要がある場合に、それを簡単に行うことができます。これは、 REPLICATEを使用して実行できます。したがって、アーロンの例を拡張します。
DECLARE @num_digits as int = 7
SELECT RIGHT(REPLICATE('0', @num_digits) + col, @num_digits) FROM dbo.table;