小编典典

SQL更新替换语句

sql

我需要使用REPLACE编写一条sql更新语句。字符串看起来像’SE * 88 * 000000001’。我需要替换两个星号“
*”之间的数字。除了要替换的数字始终在两个星号之间之外,这里没有其他模式。在这种情况下可以使用通配符吗?

感谢你的帮助。

谢谢!


阅读 152

收藏
2021-04-28

共1个答案

小编典典

;
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*%'
2021-04-28