La question est assez explicite. Je veux faire une simple recherche et remplacer, comme vous le feriez dans un éditeur de texte sur les données d'une colonne de ma base de données (qui est MsSQL sur un serveur MS Windows 2003)
Réponses
Trop de publicités?ainsi:
BEGIN TRANSACTION;
UPDATE table_name
SET column_name=REPLACE(column_name,'text_to_find','replace_with_this');
COMMIT TRANSACTION;
Exemple: Remplace <script ... par <a ... pour éliminer les vulnérabilités javascript
BEGIN TRANSACTION; UPDATE testdb
SET title=REPLACE(title,'script','a'); COMMIT TRANSACTION;
Cela m'a dirigé dans la bonne direction, mais j'ai une DB qui trouve son origine dans MSSQL 2000 et est toujours à l'aide de l' ntext
type de données pour la colonne I est remplacé par. Lorsque vous essayez d'exécuter le REMPLACER sur ce type vous obtenez cette erreur:
Argument de type de données ntext est pas valide pour l'argument 1 de la remplacer fonction.
La solution la plus simple, si votre colonne de données s'inscrit dans nvarchar
, est de jeter la colonne au cours de la remplacer. L'emprunt du code de la accepté de répondre:
UPDATE YourTable
SET Column1 = REPLACE(cast(Column1 as nvarchar(max)),'a','b')
WHERE Column1 LIKE '%a%'
Cela a fonctionné parfaitement pour moi. Merci pour ce post sur le forum j'ai trouvé pour la correction. Espérons que cela aide quelqu'un d'autre!
Si vous utilisez SQL Server 2005 ou une version ultérieure, une bibliothèque CLR disponible à l' adresse http://www.sqlsharp.com/ fournit des implémentations .NET de chaînes et de fonctions RegEx qui, en fonction de votre volume et du type de données, peuvent être plus facile à utiliser et, dans certains cas, les fonctions de manipulation de chaînes .NET peuvent être plus efficaces que celles de T-SQL.