从数值中格式化SQL Server 2005中的字符串

时间:2013-06-04 14:35:29

标签: sql-server tsql sql-server-2005

如何在start中为D格式化字符串,为长度小于4的数字设置前导零。 E.g:

    {li> D1000 1000 {li> D0100 100

我曾尝试使用强制转换和stuff函数,但它没有按预期工作。

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

2 个答案:

答案 0 :(得分:2)

向该值添加10000将导致该数字首先具有额外的零,然后将其转换为varchar,并且仅使用最后的4将忽略添加的10000.这要求所有数字都在0到9999之间

declare @value int = 100

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

答案 1 :(得分: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