3 votes

Remplacez uniquement la chaîne dans sql lorsqu'elle n'est pas adjacente à d'autres caractères

Je suis en train d'utiliser MSSQL 2008 pour remplacer les valeurs dans certaines colonnes. Ma requête actuelle est :

UPDATE table  
SET name = replace(name, 'old', 'new')

J'aimerais savoir s'il est possible de ne remplacer 'old' par 'new' que lorsque 'old' n'est pas adjacent à d'autres caractères. C'est-à-dire : seulement lorsqu'il apparaît réellement comme 'old'. Cela garantirait que par exemple 'bold' ne devienne pas 'bnew'.

Actuellement, je récupère les résultats via JDBC, en divisant la chaîne au niveau du délimiteur (,) puis en vérifiant si la chaîne est égale à 'old'. Si c'est le cas, je veux la remplacer par 'new'. Cela prend beaucoup de temps pour récupérer tous les résultats et les renvoyer, donc si cela est possible en envoyant uniquement une instruction SQL contenant 'old' et 'new', ce serait génial !

Enregistrements où il devrait être remplacé :

  • 'old , blabla blabla, bla'
  • 'blabla, old, blabla'
  • 'blabla, bla old, blabla'
  • 'blabla, blabla, old'
  • 'blabla, bla old bla'

Enregistrements où il ne devrait pas être remplacé :

  • 'blaold, blabla'
  • 'blabla, oldbla'

1voto

Bill Martin Points 2187

Utilisez des espaces dans vos clauses.

MAJ [VotreTable] SET nom = remplacer(nom, ' ancien ', 'nouveau') OÙ nom = ' ancien '

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