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)));
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)));
将 10000 添加到该值将导致该数字首先具有额外的零,然后将其转换为 varchar 并且仅使用最后一个 4 将忽略添加的 10000。这要求所有数字都在 0 和 9999 之间
declare @value int = 100
select 'D' + right(cast(@value + 10000 as varchar(5)), 4)
当您想要获得正确的铸造实践时,这个插图板可以派上用场。
这显示了 SQL Server 系统提供的数据类型所允许的所有显式和隐式数据类型转换。这些包括 xml、bigint 和 sql_variant。从 sql_variant 数据类型的赋值没有隐式转换,但有到 sql_variant 的隐式转换
你可以在这里下载它http://www.microsoft.com/en-us/download/details.aspx?id=35834