2009-08-13 10 views
9

2つのntext列を連結して1つにする必要があります。私はそれらを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または1つのリリースで段階的に廃止されます。 NVARCHAR(MAX)は論理的な後継者であり、すべてあなたにNTEXTをプレゼントしました。

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

をし、それを使って行うこと:あなたのフィールドは最初からNVARCHAR(MAX)になり

場合は、あなただけ書くことができます!

NTEXTの代わりにNVARCHAR(MAX)を使用するようにテーブルをアップグレードすることをお勧めします。

マルク・

+0

こんにちはマーク。 私は、アプリケーションを壊す危険性があるため、変換しようとは思わない:MS Team Foundation Server。 私はそれを「固定」することなく十分な悲惨さを持っています。 あなたのソリューションに感謝します。マジックのように働いた;)。 – MariusCC

+0

OK、良い点 - 実行中のシステムに触れることはありません:-) –

+0

こんにちは@marc_s私は、あなたの最初の例では、 "NTEXT"ではなく "NEXT"という小さなタイプミスがあると思います。 (でも良い答えですが、私から+1) –

3

連結のためにnvarchar(max)に変換してください。 ntextのSQL 2005の置き換えであり、通常の操作であるnvarcharがすべて許可されます。

+0

アプリケーションを破損する危険性があるため変換できません:MS TFS。私はいくつかのフィールドをハックしようとしています。 – MariusCC

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は、より多くの情報です。

関連する問題