2

...嗯,不完全是为了PRINT. 我需要为字符串变量分配将显式子字符串与整数值(也可能与其他类型值)混合的值。目标是获取用于记录的字符串。

到目前为止,我使用的代码如下:

DECLARE @msg nvarchar(1000)
...
SET @msg = @procname + 'result = ' + CAST(@result AS nvarchar(5))
                     + '; error = ' + CAST(@error AS nvarchar(5))

其中@procname是一个字符串,如sp_my_proc:, 和@result@error整数变量。结果应如下所示(数字周围没有多余的空格,只有最小长度):

sp_my_proc: result = 3; error = 0

上述方法有效,但是......有没有比将整数变量转换为字符串更好的方法CAST(@result AS nvarchar(5))?(认为​​神奇的数字 5 是一个需要忽略的小细节。)

您如何解决在代码中生成此类字符串的问题?

谢谢,彼得

4

1 回答 1

1

在 SQL-Server 中,您可以使用 STR() 函数 http://msdn.microsoft.com/ru-ru/library/ms189527.aspx 'length' 参数的默认值为 10。因为整数变量永远不会超过 10符号(你会有溢出)这将始终没有错误:

declare @test int
set @test = 333333333
select STR(@test)

另外,看看 T-SQL 中的类似 String.Format 的功能?

于 2012-08-31T08:59:59.270 回答