我正在使用MSSQL 2008替换某些列中的值。我当前的查询是:只在sql中替换字符串时不与其他字符相邻
UPDATE table
SET name = replace(name, 'old', 'new')
我想知道是否有可能仅通过替换“旧”的“新”时,“老”是不相邻的其他字符。也就是说:只有当它实际发生为'旧' 这将确保例如'bold'不会变成'bnew'
目前我通过JDBC检索结果,在分隔符(,)处分割字符串,然后检查字符串是否等于'old'。如果是这样,我想用'新'替换。检索所有结果并将它们发送回去需要很长时间,所以如果仅通过发送包含'old'的SQL语句可能会很好,那么会很棒!
,它应该被替换记录:
- '老,布拉布拉布拉布拉,BLA'
- '布拉布拉,老,布拉布拉'
- '布拉布拉,BLA老,布拉布拉'
- '布拉布拉,布拉布拉,旧'
- '布拉布拉,BLA BLA老'
条记录它不应该被替换为:
- 'blaold,布拉布拉'
- '布拉布拉,oldbla' 在你的条款
你有什么话分隔符?只是空格和字符串开始/字符串结尾还是标点符号? – 2012-01-31 13:55:15
@MartinSmith我目前正在用Java(与正则表达式匹配,替换并发送回数据库)执行此操作,但需要很长时间。我想知道如何在SQL中做到这一点,但我不熟悉它的语法 – Freek8 2012-01-31 13:58:15
@MartinSmith逗号被用作分隔符。 – Freek8 2012-01-31 13:59:16