VARCHAR(MAX)不容纳完整字符串

时间:2019-07-19 11:40:59

标签: sql-server tsql varcharmax

我定义了一个varchar(max),但它正在截断字符串。

我已经搜索了解决方案,发现分配或附加到字符串的所有新值都应强制转换为varchar(max),但这仍然无济于事。

这是我的代码:

DECLARE @tr VARCHAR(MAX) = ''

SELECT
    @tr = CAST(CAST(@tr AS VARCHAR(MAX)) + 
               CAST(ISNULL(CONCAT
                (
                    '<tr>',
                    '<td class="dataline">',t.ComponentEquipmentNumber,'</td>',
                    '<td class="dataline">',t.ComponentDescription,'</td>',
                    '<td class="dataline">',t.ReceiverCustodian,'</td>',
                    '<td class="dataline">',t.[Location],'</td>',
                    '<td class="dataline">',t.ParentSystemNumber,'</td>',
                    '<td class="dataline">',t.ParentSystemLocation,'</td>',
                    '<td class="dataline">',t.RootSystemNumber,'</td>',
                    '<td class="dataline">',t.RootSystemLocation,'</td>',
                    '<tr/>'
                ),'') AS VARCHAR(MAX)) AS VARCHAR(MAX))
FROM 
    #TempFinal t 
ORDER BY 
    EquipmentId

您可以看到我已经在各个级别上对VARCHAR(MAX)进行了强制转换,只是为了使其起作用,但仍然没有起作用。

当我尝试打印字符串print len(@tr)的长度时,它返回这个奇怪的数字76788,它甚至不等于8000的{​​{1}}个字符,得到这个数字的逻辑。

请帮助!

0 个答案:

没有答案