0

使用 SQL Server 的 FORMATMESSAGE 命令,我正在打印状态消息:

PRINT FORMATMESSAGE('Run time #%2d: From %s to %s', @i, CONVERT(VARCHAR(10), @from_date, 101), CONVERT(VARCHAR(10), @to_date, 101))

这给了我这样的输出:

Run time # 8: From 03/21/2019 to 04/21/2019
Run time # 9: From 04/21/2019 to 05/21/2019
Run time #10: From 05/21/2019 to 06/21/2019
Run time #11: From 06/21/2019 to 07/21/2019

但是,如果@i 变量小于 10,我如何填零。它给了我两个位置,但我不知道要左填充零的字符。

4

3 回答 3

1

更新:看起来FormatMessage支持更多格式选项,您可以轻松指定任意数量的前导 0:

PRINT FORMATMESSAGE('Run time #%02d: From %s to %s', @i, CONVERT(VARCHAR(10), @from_date, 101), CONVERT(VARCHAR(10), @to_date, 101))
于 2019-09-25T20:45:48.143 回答
0

尝试%0{# of digits}i( %02i) 像这样:

Declare @i int = 2

PRINT FORMATMESSAGE('La La La: %02i', @i)

-- OUTPUT: 'La La La: 02'

你的字符串:

PRINT FORMATMESSAGE('Run time #%02i: From %s to %s', @i, CONVERT(VARCHAR(10), @from_date, 101), CONVERT(VARCHAR(10), @to_date, 101))
于 2019-09-25T20:52:24.343 回答
0

看看 Java 是如何解决我的问题的。第一个 0 是零填充,第二个数字是要使用的列数。

Run time #%02d: From %s to %s

回报:

Run time #08: From 03/21/2019 to 04/21/2019
Run time #09: From 04/21/2019 to 05/21/2019
Run time #10: From 05/21/2019 to 06/21/2019
Run time #11: From 06/21/2019 to 07/21/2019

使用:

Run time #%-4d: From %s to %s

左对齐在四列。凉爽的!

于 2019-09-25T20:54:02.590 回答