1

I want to generate running serial no like 0001, 0999, 1100, 19300 with leading padded zeros until four characters. I have written below query to generate that number.

Select Right(Power(10, 4) + 02, 4)

Select Right(Power(10, 4) + 102, 4)

Select Right(Power(10, 4) + 10002, 4)

Actual Result:-

0002

0102

0002

Expected Result:-

0002

0102

10002

In SQL Server 2012, there is FORMAT function available.

SELECT Format(1, '0002')

SELECT Format(1000, '0102')

SELECT Format(10000, '10002')

Actual Output:-

0002

0102

10002

Currently I am using SQL Server 2008. How can I achieve that padded left zeros until 4 characters length after that original number should come?

RGS
  • 4,959
  • 5
  • 33
  • 59

2 Answers2

2

You'll have to work with the value's length:

Select CASE WHEN LEN([your_column]) > 4 THEN [your_column] ELSE Right(Power(10, 4) + [your_column], 4) END
Rick Wolff
  • 749
  • 15
  • 24
2

Using REPLICATE:

DECLARE @i INT = 10
SELECT CASE 
          WHEN LEN(CAST(@i AS VARCHAR(4))) >=4 THEN CAST(@i AS VARCHAR(4))            
          ELSE REPLICATE('0', 4-LEN(CAST(@i AS VARCHAR(4)))) + CAST(10 AS VARCHAR(4))
       END
Giorgos Betsos
  • 69,699
  • 7
  • 57
  • 89