9

我需要将 2 个 ntext 列连接成一个。我无法将它们转换为 nchar,因为两者都包含超过 4000 个字符的字符串。在 SQL Server 2005 中有没有办法做到这一点?

4

3 回答 3

12
UPDATE 
    YourTable
SET 
    Field = CAST( (CAST(field1 AS NVARCHAR(MAX)) + CAST(field2 AS NVARCHAR(MAX))) AS NTEXT)
WHERE 
    (your condition here)

但实际上 - SQL Server 2005NTEXT已被弃用,并且很可能会在 SQL Server 2008 R2 或以后的一个版本中逐步淘汰。NVARCHAR(MAX)是合乎逻辑的继任者,给你所有NTEXT曾经给过你的,还有更多!

如果您的字段是NVARCHAR(MAX)从一开始的,您可以只写:

UPDATE 
    YourTable
SET 
    field = field1 + field2
WHERE 
    (your condition here)

并完成它!

我建议你升级你的表来使用NVARCHAR(MAX)而不是NTEXT.

马克

于 2009-08-13T15:08:33.407 回答
3

将它们转换nvarchar(max)为连接。它是 SQL 2005 的替代品ntext,允许所有常用nvarchar操作。

于 2009-08-13T14:49:18.840 回答
1

有一种方法可以更新 ntext 列:

DECLARE @memo binary(16)

SELECT 
    @memo = TEXTPTR(field1)
FROM 
    YourTable
WHERE 
    (your condition here)

UPDATETEXT YourTable.field1 @memo NULL 0 'Text to append'

这里有更多信息。

于 2011-11-20T23:40:47.860 回答