Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Most efficient method for adding leading 0's to an int in sql

Tags:

sql

sql-server

I need to return two fields from a database concatenated as 'field1-field2'. The second field is an int, but needs to be returned as a fixed length of 5 with leading 0's. The method i'm using is:

SELECT Field1 + '-' + RIGHT('0000' + CAST(Field2 AS varchar),5) FROM ...

Is there a more efficient way to do this?

like image 736
Mike Bennett Avatar asked Apr 22 '09 19:04

Mike Bennett


2 Answers

That is pretty much the way: Adding Leading Zeros To Integer Values

So, to save following the link, the query looks like this, where #Numbers is the table and Num is the column:

   SELECT RIGHT('000000000' + CONVERT(VARCHAR(8),Num), 8) FROM #Numbers

for negative or positive values

declare @v varchar(6)
select @v = -5

SELECT case  when @v < 0 
then '-' else '' end + RIGHT('00000' + replace(@v,'-',''), 5) 
like image 58
SQLMenace Avatar answered Nov 15 '22 19:11

SQLMenace


Another way (without CAST or CONVERT):

SELECT RIGHT(REPLACE(STR(@NUM),' ','0'),5)
like image 44
DJ. Avatar answered Nov 15 '22 18:11

DJ.