首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在transact sql中输出带有“`FORMATMESSAGE`”的新行?

如何在transact sql中输出带有“`FORMATMESSAGE`”的新行?
EN

Database Administration用户
提问于 2020-03-08 23:20:57
回答 1查看 1.3K关注 0票数 1

下面的代码说明了有多少用户在特定的SE站点上创建了至少一个帖子。

代码语言:javascript
复制
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输出新行?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2020-03-08 23:53:24

问题是把\r\n解释为返工和送线。Server在某些地方确实是这样解释\r\n的,但是FORMATMESSAGE函数不是其中之一,因此您需要使用CHAR(13)CHAR(10),它们表示ASCII的载运返回代码(13)和Line (10):

代码语言:javascript
复制
DECLARE @RowCount INT
SET @RowCount = (SELECT 10)
PRINT FORMATMESSAGE('%s has ' + CHAR(13) + CHAR(10) + ' %d users', DB_NAME(), @RowCount+1)

或者使用变量:

代码语言:javascript
复制
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)
票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/261478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档