在 FORMATMESSAGE 中用零填充变量
Left fill variable with zeros in FORMATMESSAGE
使用 SQL 服务器的 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,我该如何补零。它给了我两个位置,但我无法找出要用零填充的字符。
更新:看起来 FormatMessage 支持更多格式选项,您可以轻松指定任意数量的前导 0:
PRINT FORMATMESSAGE('Run time #%02d: From %s to %s', @i, CONVERT(VARCHAR(10), @from_date, 101), CONVERT(VARCHAR(10), @to_date, 101))
像这样尝试 %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))
看看 Java 它是如何解决我的 problem.The 第一个 0 是零填充,第二个数字是要使用的列数。
Run time #%02d: From %s to %s
Returns:
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
四列左对齐。酷!
使用 SQL 服务器的 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,我该如何补零。它给了我两个位置,但我无法找出要用零填充的字符。
更新:看起来 FormatMessage 支持更多格式选项,您可以轻松指定任意数量的前导 0:
PRINT FORMATMESSAGE('Run time #%02d: From %s to %s', @i, CONVERT(VARCHAR(10), @from_date, 101), CONVERT(VARCHAR(10), @to_date, 101))
像这样尝试 %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))
看看 Java 它是如何解决我的 problem.The 第一个 0 是零填充,第二个数字是要使用的列数。
Run time #%02d: From %s to %s
Returns:
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
四列左对齐。酷!