Je dois concaténer 2 colonnes ntext en une seule. Je ne peux pas les convertir en nchar, car les deux contiennent des chaînes de plus de 4000 caractères. Existe-t-il un moyen de le faire dans SQL Server 2005?Concaténer ntext dans SQL Server 2005
Répondre
UPDATE
YourTable
SET
Field = CAST((CAST(field1 AS NVARCHAR(MAX)) + CAST(field2 AS NVARCHAR(MAX))) AS NTEXT)
WHERE
(your condition here)
Mais vraiment - avec SQL Server 2005, NTEXT
devient obsolète et sera très probablement progressivement dans SQL Server 2008 R2 ou une version ultérieure. NVARCHAR(MAX)
est le successeur logique, vous donnant tous NTEXT
jamais vous a donné, et beaucoup plus!
Si vos champs seraient NVARCHAR(MAX)
dès le début, vous pourriez simplement écrire:
UPDATE
YourTable
SET
field = field1 + field2
WHERE
(your condition here)
et faire avec elle!
Je vous suggère de mettre à jour vos tables pour utiliser NVARCHAR(MAX)
au lieu de NTEXT
.
Marc
Convertissez-les en nvarchar(max)
pour la concaténation. C'est le remplacement SQL 2005 pour ntext
et permet toutes les opérations habituelles nvarchar
.
Impossible de les convertir en raison du risque de rupture de l'application: MS TFS. J'essaie juste de pirater des champs. – MariusCC
Il y a une façon de mettre à jour la colonne 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 sont plus d'informations.
Bonjour Marc. Je ne veux pas essayer de les convertir en raison du risque de rupture de l'application: MS Team Foundation Server. J'ai assez de misère sans 'le réparer'. Merci pour votre aide. A travaillé comme par magie;). – MariusCC
OK, bon point - ne touchez jamais un système en cours d'exécution :-) –
Salut @marc_s Je pense que vous pourriez avoir une petite faute de frappe dans votre premier exemple, "NEXT" plutôt que "NTEXT". (Bonne réponse cependant, +1 de ma part) –