1

D对于长度小于四的数字,我如何用 in 开头和前导零格式化字符串。例如:

  • D1000为了1000
  • D0100为了100

我曾尝试使用铸造和stuff功能,但它没有按我预期的那样工作。

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

2 回答 2

2

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

declare @value int = 100

select 'D' + right(cast(@value + 10000 as varchar(5)), 4)
于 2013-06-04T14:41:25.803 回答
0

当您想要获得正确的铸造实践时,这个插图板可以派上用场。

这显示了 SQL Server 系统提供的数据类型所允许的所有显式和隐式数据类型转换。这些包括 xml、bigint 和 sql_variant。从 sql_variant 数据类型的赋值没有隐式转换,但有到 sql_variant 的隐式转换

下图显示了 SQL Server 系统提供的数据类型所允许的所有显式和隐式数据类型转换。 这些包括 xml、bigint 和 sql_variant。 从 sql_variant 数据类型的赋值没有隐式转换,但有到 sql_variant 的隐式转换。

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

于 2013-06-04T15:11:37.953 回答