85 votes

Comment puis-je effectuer une simple recherche et remplacement dans MsSQL?

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)

155voto

SQLMenace Points 68670

par exemple, cela remplacera tous les caractères a par b

 UPDATE YourTable
SET Column1 = REPLACE(Column1,'a','b')
WHERE Column1 LIKE '%a%'
 

Btw il n'y a pas de serveur SQL 2003

18voto

Jiaaro Points 14379

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;
 

8voto

bmoeskau Points 13136

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!

0voto

Joe Kuemerle Points 3866

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X