2014-10-02 140 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