如何格式化SQL PRINT消息 - 一种C printf()?

时间:2012-08-31 08:44:16

标签: sql sql-server

......好吧,不仅仅是PRINT。我需要为字符串变量赋值,该值将显式子串与整数值混合(可能还有其他类型值)。目标是获取用于记录的字符串。

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

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

其中@procnamesp_my_proc:之类的字符串,@result@error是整数变量。结果应该是这样的(数字周围没有额外的空格,只有最小长度):

sp_my_proc: result = 3; error = 0

上述方法有效,但是......有没有更好的方法将整数变量转换为字符串而不是CAST(@result AS nvarchar(5))? (考虑幻数5是一个可忽略的小细节。)

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

谢谢,彼得

1 个答案:

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

另外,看一看 String.Format like functionality in T-SQL?