2013-06-04 80 views
1

如何在开始时对D字符串进行格式化,并将长度小于4的数字作为前导零。 E.g:数值为SQL Server 2005中的格式字符串

  • D10001000
  • D0100100

我试图与铸造和stuff功能工作,但我希望它没有工作。

SELECT STUFF('D0000', LEN(@OperatingEndProc) - 2, 4, CAST((CAST(SUBSTRING(@OperatingEndProc, 2, 4) AS INT) + 1) AS VARCHAR(10))); 

回答

2

增加10000至值将导致数有有多余的零,然后再铸造它为varchar和只有用最后的4会忽略加10000这要求所有的数字是0和9999之间

declare @value int = 100 

select 'D' + right(cast(@value + 10000 as varchar(5)), 4) 
+0

工作就像一个魅力。你能提供一些解释吗? – vmeln

0

这说明板可以派上用场,当你想获得合适的铸造实践..

这说明所有的显性和隐性的数据类型转换是 允许SQL Server系统提供的数据类型。这些包括xml, bigint和sql_variant。有从SQL_VARIANT数据类型分配 的隐式转换,但隐式转换 SQL_VARIANT

The following illustration shows all explicit and implicit data type conversions that are allowed for SQL Server system-supplied data types. These include xml, bigint, and sql_variant. There is no implicit conversion on assignment from the sql_variant data type, but there is implicit conversion to sql_variant.

你可以在这里下载http://www.microsoft.com/en-us/download/details.aspx?id=35834

+0

它是如何触及我的问题的? – vmeln

相关问题