2014-02-07 23 views
0

我有一個像1,3065這樣的數字字段,我需要這樣做:000000000000000130在SQL上填充數字SYBASE

我的意思是16個整數和2位小數,沒有逗號,在左邊加上0,如果需要的話,在右邊加上0。

有沒有辦法做到這一點與查詢?

回答

1

我認爲這將在Sybase工作:

select right(replicate('0', 16) + cast(cast(field*100 as int) as varchar(255)), 16) 
+0

如果我需要一個近似值而不是截斷值? – abierto

+0

@abierto。 。 。最簡單的方法是用'cast(field * 100 + 0.5 as int)'替換上面'cast(field * 100 as int)'。你也可以使用'round()'函數。 –

0

試試這個方法:

select REPLICATE('0',16-len(cast(cast((1.3065*100) as int) as varchar(16))))+cast(cast((1.3065*100) as int) as varchar(16)) 

的上述結果中進行選擇:

0000000000000130 

如果你想逼近你應該使用FLOORCEILING功能如下

declare @multiplier int 

select @multiplier = 1000 

select REPLICATE('0',16-len(cast((floor(1.3065*@multiplier)) as varchar(16))))+cast(floor(1.3065*@multiplier) as varchar(16)) 

的上述結果中進行選擇:

0000000000001306 

你可以通過改變@multiplier改變的近似值。例如,如果您希望從第一個查詢得到結果,您應該將@multiplier更改爲100