J'ai besoin de mettre à jour / remplacer les données dans datatable.column. La table a un champ nommé Content
. J'utilise la REPLACE
fonction. Étant donné que le type de données de la colonne est NTEXT
, SQL Server ne me permet pas d'utiliser la REPLACE
fonction.
Je ne peux pas changer le type de données car cette base de données est une table de logiciels tiers. La modification du type de données entraînera l'échec de l'application.
UPDATE [CMS_DB_test].[dbo].[cms_HtmlText]
SET Content = REPLACE(Content,'ABC','DEF')
WHERE Content LIKE '%ABC%'
Je reçois cette erreur:
Msg 8116, niveau 16, état 1, ligne 1 Le type de données d'argument ntext n'est pas valide pour l'argument 1 de la fonction de remplacement.
- Puis-je résoudre ce problème avec T-SQL? Quelqu'un a-t-il un exemple de lecture et de boucle?
- Comme il s'agit d'une conversion unique, je peux peut-être changer de type, mais j'ai peur de gâcher les données.
Il y a un champ de clé primaire: nom: ID - entier - c'est une identité .... Je dois donc y penser aussi. Peut-être définir l'identité sur N temporaire.
Veuillez indiquer comment réaliser la fonction REMPLACER?
Environ. 3000 déclarations doivent être mises à jour avec une nouvelle solution.
la source
Réponses:
SI vos données ne débordent pas de 4000 caractères ET que vous utilisez SQL Server 2000 ou un niveau de compatibilité de 8 ou SQL Server 2000:
Pour SQL Server 2005+:
la source
NText
vraiment nécessaire? Je pense qu'assignerNVarchar(MAX)
à leNText
ferait automatiquement.En supposant SQL Server 2000, la question StackOverflow suivante doit résoudre votre problème.
Si vous utilisez SQL Server 2005/2008, vous pouvez utiliser le code suivant (extrait d' ici ):
la source