【问题标题】:Unexpected output when executed执行时出现意外输出
【发布时间】:2019-02-08 16:18:06
【问题描述】:

当我尝试select 两列时,我在 SQL Server 中遇到问题。

这是我写的代码:

declare @d varchar(max)

set @d = ''

begin
    select @d = @d + convert(nvarchar(MAX), R.Data, 121) + ('<table></td><td>' + convert(nvarchar(MAX), C.No) + '</td><td>' + C.Nome + '</td><td>' + convert(nvarchar(MAX), V.IdVendedor) + '</td><td>' + convert(nvarchar(MAX), V.Vendnm) + '</td></tr></table>') 
    from dbo.Reclamacoes R
    Inner Join dbo.PHC_CLIENTES_SAMSYS C On R.IdCliente = C.Id
    Inner Join dbo.PHC_VENDEDORES_SAMSYS V on R.IdVendedor = V.IdVendedor 

    select @d As Data, @d As HTML_COLUMN
end

显示如下:

2019-02-07 00:00:00.0000000 " <table></td><td>2762.00</td><td>REGINA & MIGUEL, LDA. ( REMI )</td><td>78.00</td><td>AndreiaVeloso</td></tr></table> "

如您所见,数据与应该出现在另一列中的内容混合在一起(我输入了“”应该出现在另一列中的内容)。

当我执行列时,知道“数据”与“HTML_COLUMN. 而且我正在尝试仅使用一个变量来获得两列。

有人能告诉我在我的情况下是否有可能在只有一个变量的情况下让查询显示两列?提前致谢。

【问题讨论】:

  • 创建第二个变量?如何在 1 个变量中存储 2 个单独的数据片段。这没有任何意义。
  • 是的,我已经这样做了,但是在我的公司里,他们要求我只做一个变量,并问我为什么我有两个变量..
  • 因此您没有 2 个变量 - 您只有 1 个。您的两列都以交替方式保存到 @d,因为对于每一行,您添加 Data 和您的 @ 987654326@一遍又一遍
  • @TabsNotSpaces 是的,我注意到了,但现在我要问的是,这两个列是否可以只包含一个变量?
  • 我的意思是在您的问题中添加一些示例数据和所需的输出。

标签: sql sql-server variables select converters


【解决方案1】:

您可以将@d 设为Table Variable 并在其中放入两列。

来自 MSDN 的示例:

DECLARE @MyTableVar table(  
    EmpID int NOT NULL,  
    OldVacationHours int,  
    NewVacationHours int,  
    ModifiedDate datetime); 

【讨论】:

  • 我是怎么做到的??
  • 我的答案中的链接向您展示了如何。向下滚动到示例 C。
  • 没有那种 sql 经验,我不懂一半或更多的代码,我已经访问过那个网站和其他类似的网站。
【解决方案2】:

试试这个..

DECLARE @HTML NVARCHAR(MAX) = '';

SET @HTML
    = N'<table border="1" >'
      + N'<tr><th>Data</th><th>Nome</th><th>IdVendedor</th><th>Vendnm</th>'
      + CAST((
                 SELECT
                     td = R.Data
                   , ''
                   , td = C.Nome 
                   , ''
                   , td = V.IdVendedor
                   , ''
                   , td = V.Vendnm
                FROM dbo.Reclamacoes                 R
                INNER JOIN dbo.PHC_CLIENTES_SAMSYS   C ON R.IdCliente = C.Id
                INNER JOIN dbo.PHC_VENDEDORES_SAMSYS V ON R.IdVendedor = V.IdVendedor
                 FOR XML PATH('tr'), TYPE
             ) AS NVARCHAR(MAX)) + N'</table>';

SELECT @HTML;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-11
    • 2021-11-15
    • 2021-09-28
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-05
    相关资源
    最近更新 更多