2009-08-13 114 views
9

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

回答

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

不过说真的 - 与SQL Server 2005,NTEXT变得过时,将最有可能在SQL Server 2008 R2或一个释放后逐步被淘汰。 NVARCHAR(MAX)是合乎逻辑的接班人,给你所有的NTEXT有史以来给你,还有更多!

如果你的领域是从一开始就NVARCHAR(MAX),你可以这样写:

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

,并用它做!

我建议你升级你的桌子使用NVARCHAR(MAX)而不是NTEXT

马克

+0

Hi Marc。 我不想尝试转换它们,因为存在破坏应用程序的风险:MS Team Foundation Server。 我有足够的苦难而没有“修复”它。 感谢您的解决方案。像魔术一样工作;)。 – MariusCC 2009-08-19 09:21:15

+0

好吧,好点 - 永远不要触碰正在运行的系统:-) – 2009-08-19 09:35:38

+0

嗨@mar​​c_s我认为你的第一个例子中可能有一个小小的错字,“NEXT”而不是“NTEXT”。 (尽管答案很好,我从+1开始) – 2011-11-23 14:44:54

3

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

+0

无法转换它们是因为存在破坏应用程序的风险:MS TFS。我只是想破解一些领域。 – MariusCC 2009-08-19 09:14:07

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' 

Here更多信息。