在 SQL 中,如何为文本添加换行符并在结果 window 中显示文本?

In SQL, how do you add a line break to text AND display text in the Results window?

我试图在两个不同的行上显示硬编码文本,然后在它们之后显示三个 table。我遇到的问题是让文本和 table 显示在同一个 window 中。 (这甚至可能吗?)

我从 (How to insert a line break in a SQL Server VARCHAR/NVARCHAR string) 并将它与我自己的结合起来得到这个...

DECLARE @ASTATEMENT VARCHAR(100);
SET @ASTATEMENT = 'LINE 1' + CHAR(13)+CHAR(10) + 'LINE 2';
SELECT @aStatement

SELECT * FROM table1
SELECT * FROM table2
SELECT * FROM table3

此代码执行并显示在结果 window 中,但不具有第一个 SELECT 语句的设计功能(两行单独)。

所以我把它改成...

DECLARE @ASTATEMENT VARCHAR(100);
SET @ASTATEMENT = 'LINE 1' + CHAR(13)+CHAR(10) + 'LINE 2';
PRINT @aStatement

SELECT * FROM table1
SELECT * FROM table2
SELECT * FROM table3

现在,换行符正确,但文本显示在消息 window 中,我的 table 显示在结果 window 中。有没有办法让两者都显示在结果中 window?

(注意:作为替代方案,我知道我可以简单地创建一个临时文件 table。用所需的文本填充我的 table,然后 (SELECT *) 来自那个温度table。不过我希望不必那样做。)

您不能这样做,因为打印将转到消息选项卡,select 结果将转到结果选项卡。

SELECT @aStatement 意味着给我一行,其中的值将是变量@aStatement 的值,所以通过 selecting 这个变量你都不能得到你想要的。

我能想到的一种方法是右键单击查询 windows,结果到 -> 结果到文本。并执行你的语句。

如前所述,Sql Server Management Studio 在以网格模式显示结果时忽略换行符。

如果您确实需要结果在网格模式下显示为不同的行,您可以执行以下操作:

    Select LineText
    From   (
        Select Cast('<X>'+Replace(@ASTATEMENT,CHAR(13) + CHAR(10),'</X><X>')+'</X>' As XML) As record
    ) x
    Cross Apply
    ( 
        Select fdata.D.value('.','varchar(50)') As LineText
        From x.record.nodes('X') As fdata(D)
    ) t