我正在使用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