我需要使用REPLACE编写sql update语句。字符串看起来像'SE*88*000000001‘。我需要替换两个星号'*‘之间的数字。这里没有模式,除了要替换的数字总是在两个星号之间。在这种情况下可以使用通配符吗?
感谢你的帮助。
谢谢!
发布于 2012-03-02 06:43:34
;
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*%'发布于 2012-03-02 06:41:18
您可以尝试使用PARSENAME函数。类似于:
UPDATE YourTable
SET YourColumn =
PARSENAME(REPLACE(YourColumn, '*', '.'), 3)
+ '*'
+ 'whatever you want to replace the number with'
+ '*'
+ PARSENAME(REPLACE(YourColumn, '*', '.'), 1)只要值不包含句点,并且只包含数字周围的两个*,这种方法就会起作用。
https://stackoverflow.com/questions/9525184
复制相似问题