1

7桁以上の数字が必要です。例えば:

0000001
123456789
0012345

すべて有効です。長さが7未満の場合にのみ、数値に0を埋め込む必要があります。SQLServerでこれを行うにはどうすればよいですか。私が得た最善の方法は、長さが7未満の場合に数値を埋めることですが、それを超えると、代わりに数値が切り捨てられ始めます。

4

3 に答える 3

6
 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;
于 2012-07-10T01:42:23.003 に答える
0

こんにちはこれをチェックしてください。

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
于 2012-07-10T11:00:13.153 に答える
0

アーロン・ベルトランは私をそれに打ち負かしました。

キャラクターとそれを繰り返す必要がある回数の両方をカプセル化することも役立つかもしれないことを付け加えたいと思います。そうすれば、将来いつか変更する必要がある場合に、それを簡単に行うことができます。これは、 REPLICATEを使用して実行できます。したがって、アーロンの例を拡張します。

DECLARE @num_digits as int = 7
SELECT RIGHT(REPLICATE('0', @num_digits) + col, @num_digits) FROM dbo.table;
于 2012-07-10T01:50:59.163 に答える