只在不与其他字符相邻时替换sql中的字符串

时间:2012-01-31 13:51:51

标签: sql replace

我使用MSSQL 2008替换某些列中的值。我目前的疑问是:

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

我想知道是否有可能只替换旧的' by' new'什么时候老'与其他角色不相邻。那就是:只有当它实际发生时才会发生旧的'  这将确保例如'粗体'不会成为' bnew'

目前我通过JDBC检索结果,在分隔符(,)处拆分字符串,然后检查字符串是否等于“旧”。如果是这样,我想替换为' new'。检索所有结果并将其发回需要很长时间,所以如果可以通过仅发送包含“旧”的SQL语句来实现这一点。 &安培; '新'那会很棒!

记录应该替换的位置:

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

记录不应该更换的地方:

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

1 个答案:

答案 0 :(得分:1)

在子句中使用空格。

更新[YourTable] SET name = replace(name,'old','new') 名称='旧'