Thursday, June 25, 2009

Using sql to padding a string with leading zeros (0)

วิธีการเพิ่ม 0 เข้าไปหน้าตัวเลขโดยใช้ SQL Stored Procedure

DECLARE @number INT
DECLARE @size_of_fixed_string TINYINT
DECLARE @string VARCHAR(10)

SET @number = 40 --ตัวเลขที่จะ add 0
SET @size_of_fixed_string = 10 --จำนวนหลักที่ต้องการ

PRINT REPLICATE( '0', @size_of_fixed_string )

SET @string = LEFT( REPLICATE( '0', @size_of_fixed_string ),
@size_of_fixed_string - LEN( @number ) ) + CAST( @number AS VARCHAR(10) )

PRINT @string

ผลลัพธ์คือ
0000000000
0000000040

หรือ

SELECT LEFT(REPLICATE('0',4),4-len(1)) + CAST(1 AS VARCHAR(10))
SELECT LEFT(REPLICATE('0',4),4-len(20)) + CAST(20+1 AS VARCHAR(10))

บรรทัดแรกตัวเลขคือ 1 จะใช้จำนวนหลัก 4 หลัก
บรรทัดที่สองตัวเลขคือ 20 + 1 จะใช้ 4 หลักเหมือนกัน ผลลัพธ์คือ
0001
0021

Thanks for http://bytes.com/groups/ms-sql/495625-how-can-i-conserve-initial-zero-when-convert-numeric-string-using-str
http://sqlblogcasts.com/blogs/tonyrogerson/archive/2006/05/29/765.aspx