下面的代码说明了有多少用户在特定的SE站点上创建了至少一个帖子。
DECLARE @RowCount INT
SET @RowCount = (SELECT COUNT(DISTINCT OwnerUserId)
FROM Posts where OwnerUserId is not null)
PRINT FORMATMESSAGE('%s has \r\n %d users', DB_NAME(), @RowCount+1)但是,基本上,FORMATMESSAGE部分并不像预期的那样工作。
通常,\n (在很多系统和语言中)和\r\n (主要在MS系统中)代表着新的线条。我两次都试了,甚至/r/n,都没有用。
如何在transact sql中使用FORMATMESSAGE输出新行?
发布于 2020-03-08 23:53:24
问题是把\r\n解释为返工和送线。Server在某些地方确实是这样解释\r\n的,但是FORMATMESSAGE函数不是其中之一,因此您需要使用CHAR(13)和CHAR(10),它们表示ASCII的载运返回代码(13)和Line (10):
DECLARE @RowCount INT
SET @RowCount = (SELECT 10)
PRINT FORMATMESSAGE('%s has ' + CHAR(13) + CHAR(10) + ' %d users', DB_NAME(), @RowCount+1)或者使用变量:
DECLARE @RowCount INT,
@NewLine CHAR(2) = CHAR(13) + CHAR(10)
SET @RowCount = (SELECT 10)
PRINT FORMATMESSAGE('%s has ' + @NewLine + ' %d users', DB_NAME(), @RowCount+1)
-- or
DECLARE @RowCount INT,
@NewLine CHAR(2) = CHAR(13) + CHAR(10)
SET @RowCount = (SELECT 10)
PRINT FORMATMESSAGE('%s has %s %d users', DB_NAME(), @NewLine, @RowCount+1)https://dba.stackexchange.com/questions/261478
复制相似问题