2012-01-31 58 views
3

我正在使用MSSQL 2008替换某些列中的值。我当前的查询是:只在sql中替换字符串时不与其他字符相邻

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

我想知道是否有可能仅通过替换“旧”的“新”时,“老”是不相邻的其他字符。也就是说:只有当它实际发生为'旧' 这将确保例如'bold'不会变成'bnew'

目前我通过JDBC检索结果,在分隔符(,)处分割字符串,然后检查字符串是否等于'old'。如果是这样,我想用'新'替换。检索所有结果并将它们发送回去需要很长时间,所以如果仅通过发送包含'old'的SQL语句可能会很好,那么会很棒!

,它应该被替换记录:

  • '老,布拉布拉布拉布拉,BLA'
  • '布拉布拉,老,布拉布拉'
  • '布拉布拉,BLA老,布拉布拉'
  • '布拉布拉,布拉布拉,旧'
  • '布拉布拉,BLA BLA老'

条记录它不应该被替换为:

  • 'blaold,布拉布拉'
  • '布拉布拉,oldbla' 在你的条款
+1

你有什么话分隔符?只是空格和字符串开始/字符串结尾还是标点符号? – 2012-01-31 13:55:15

+0

@MartinSmith我目前正在用Java(与正则表达式匹配,替换并发送回数据库)执行此操作,但需要很长时间。我想知道如何在SQL中做到这一点,但我不熟悉它的语法 – Freek8 2012-01-31 13:58:15

+0

@MartinSmith逗号被用作分隔符。 – Freek8 2012-01-31 13:59:16

回答

1

使用空格。

UPDATE [YourTable] 集名称=替换(姓名, '老', '新') 其中name = '老'

+0

我实际上已经改变了值,以便他们总是前后有一个空格。现在我可以使用这个解决方案。 – Freek8 2012-01-31 15:07:13

相关问题