2012-01-31 51 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

相關問題