我需要使用REPLACE編寫sql更新語句。該字符串看起來像'SE * 88 * 000000001'。我需要替換兩個星號'*'之間的數字。這裏沒有任何模式,除了被替換的數字總是在兩個星號之間。在這種情況下可以使用通配符嗎?SQL更新替換語句
感謝您的幫助。
謝謝!
我需要使用REPLACE編寫sql更新語句。該字符串看起來像'SE * 88 * 000000001'。我需要替換兩個星號'*'之間的數字。這裏沒有任何模式,除了被替換的數字總是在兩個星號之間。在這種情況下可以使用通配符嗎?SQL更新替換語句
感謝您的幫助。
謝謝!
;
WITH RowSetToUpdate AS (
SELECT
acolumn,
Asterisk1Pos = CHARINDEX('*', acolumn),
Asterisk2Pos = CHARINDEX('*', acolumn, CHARINDEX('*', acolumn) + 1)
FROM atable
WHERE acolumn LIKE '%*%*%'
)
UPDATE RowSetToUpdate
SET acolumn = STUFF(
acolumn,
Asterisk1Pos + 1,
Asterisk2Pos - Asterisk1Pos - 1,
'replacement_string'
)
或者如果它是要被替換這是一個具體的數字,那麼這將是更簡單:
UPDATE atable
SET acolumn = REPLACE(acolumn, '*88*', '*replacement_string')
WHERE acolumn LIKE '%*88*%'
您可以嘗試使用PARSENAME
函數。喜歡的東西:
UPDATE YourTable
SET YourColumn =
PARSENAME(REPLACE(YourColumn, '*', '.'), 3)
+ '*'
+ 'whatever you want to replace the number with'
+ '*'
+ PARSENAME(REPLACE(YourColumn, '*', '.'), 1)
這工作,只要值永遠不會包含在號碼段,只有兩個*的。
哪一種口味SQL的? – 2012-03-01 22:30:25
可能依賴於您正在使用的數據庫系統。 – 2012-03-01 22:30:29
SQL Server 2008 R2 – OBL 2012-03-01 22:33:17