2010-02-04 16 views
1
int i=99; 
string s=i.ToString("D4"); 
//s=="0099" 

請以有效的方式實現文本格式的前幾位數字。t-sql中的高效算法模仿int.ToString(「D4」);

+2

不是說它不能完成,而是你確定你必須在數據庫中格式化數據? SQL Server優化來管理數據,而不是格式化它。 – 2010-02-04 14:24:08

+0

當我將邏輯從我的域移動到db時,這是很少見的情況之一,因爲在我的域中執行該操作將需要ado.net事務和幾個db請求才能正確生成該數字。犧牲性能的純度。 – Valentin 2010-02-04 14:29:02

回答

3

通常我做某事喜歡:

RIGHT('0000' + [col], 4) 
0

你可以使用下面

定義的funcion選擇dbo.fsPadLeft(@我, '0',4)

或在線聲明 從y選擇重複(x,4-Len(x))+ x

Create Function [dbo].[fsPadLeft](@var varchar(200),@padChar char(1)='0',@len int) 
returns varchar(300) 
as 
Begin 

return replicate(@PadChar,@len-Len(@var))[email protected] 

end