如何将大于NVARCHAR(MAX)的字符串保存到本地T-SQL变量中?

时间:2018-03-20 16:44:00

标签: sql-server string tsql max nvarchar

我的结果非常庞大,需要以HTML格式提供。

这是查询:

DECLARE @N_Data NVARCHAR(MAX) = ''
SET @N_Data = 
            (SELECT 
                '<td>' + N_code + '</td>'
                + '<td>' + N_Title + '</td>'
                + '<td>' + N_Description + '</td>'
            FROM NTable             
            ORDER BY N_code                 
            FOR XML PATH('tr'))
SELECT @N_Data

我知道这不是获取数据的最佳方式。让我们说我在某些情况下限制了我使用这种方法的选择。

因此,当我检查结果时,它不会显示所有内容,因为结果字符串大于NVARCHAR(MAX)

我知道局部变量不允许使用TEXTNTEXT数据类型。

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

除了 nvarchar(max)之外,字符串连接引起了我的注意。

也许是另一种方法

示例

Declare @YourTable table (ID int,N_Code varchar(25),N_Title varchar(50),N_Description varchar(50))
Insert Into @YourTable values
(1,'ABC','Title For ABC','Description for ABC and some additional text'),
(1,'123','Title For 123','Description for 123 and more text')

Declare @N_Data nvarchar(max) = (
Select  td=N_Code
       ,null
       ,td=N_Title
       ,null
       ,td=N_Description
 From @YourTable
 Order By N_Code
 For XML Path('tr')
)

Select @N_Data

<强>返回

<tr>
  <td>123</td>
  <td>Title For 123</td>
  <td>Description for 123 and more text</td>
</tr>
<tr>
  <td>ABC</td>
  <td>Title For ABC</td>
  <td>Description for ABC and some additional text</td>
</tr>