2014-10-02 136 views
1

在C#中,如果我這樣做:類似的功能在C#中的String.Format

string code = string.format("C{0:000}", 7); 

結果將是:C007

有沒有在SQL Server中的功能,做同樣的事情?或者我必須自己創建一個函數?

+5

爲什麼不這樣做的C#方 – 2014-10-02 19:52:22

+0

格式化如果你正在尋找一個精確的匹配,[CLR UDF(http://msdn.microsoft.com/en-us/library /w2kae45k%28v=vs.100%29.aspx)可能是要走的路。 – 2014-10-02 19:54:13

+0

需要更新。不在SQL 2005中,但2014年的格式函數極其類似於C#。 – TomTom 2014-10-02 20:16:34

回答

3

在直TSQL中,沒有什麼比C#string.format強大。 CONVERT()函數提供了一些有限的格式,但對於任何無法處理的內容,您都必須編寫自己的函數。谷歌「SQL字符串函數」來查看你的SQL庫中有哪些工具。

+0

或者,首先不要在數據庫中執行此格式。 – 2014-10-02 20:24:01

0

SELECT 'C' + RIGHT('00' + CONVERT(varchar(3),7),3)

+1

[請勿將其轉換爲不帶長度的varchar](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring-varchar-without-length.aspx )。 – 2014-10-02 20:32:53

0

我會用REPLICATE,結合RIGHT

'C' + RIGHT(REPLICATE('0', <Padding Amount Here>) + CAST(7 AS NVARCHAR(10)), <Padding Amount Here>) 

用法:

'C' + RIGHT(REPLICATE('0', 10) + CAST(7 AS NVARCHAR(10)), 10) 

可生產後續:

C0000000007

+0

增加了長度+切換到NVARCHAR – 2014-10-02 20:24:31