首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Update Replace语句

SQL Update Replace语句
EN

Stack Overflow用户
提问于 2012-03-02 06:27:41
回答 2查看 19.9K关注 0票数 3

我需要使用REPLACE编写sql update语句。字符串看起来像'SE*88*000000001‘。我需要替换两个星号'*‘之间的数字。这里没有模式,除了要替换的数字总是在两个星号之间。在这种情况下可以使用通配符吗?

感谢你的帮助。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-02 06:43:34

代码语言:javascript
复制
;
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'
)

或者,如果它是一个要替换的特定数字,那么它会更简单:

代码语言:javascript
复制
UPDATE atable
SET acolumn = REPLACE(acolumn, '*88*', '*replacement_string')
WHERE acolumn LIKE '%*88*%'
票数 7
EN

Stack Overflow用户

发布于 2012-03-02 06:41:18

您可以尝试使用PARSENAME函数。类似于:

代码语言:javascript
复制
UPDATE YourTable
SET YourColumn =  
      PARSENAME(REPLACE(YourColumn, '*', '.'), 3)
    + '*'
    + 'whatever you want to replace the number with'
    + '*'
    + PARSENAME(REPLACE(YourColumn, '*', '.'), 1)

只要值不包含句点,并且只包含数字周围的两个*,这种方法就会起作用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9525184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档