【问题标题】:TSQL Replace Using Substring Replaces Other Parts of String As WellTSQL 使用子字符串替换也可以替换字符串的其他部分
【发布时间】:2014-12-11 23:54:26
【问题描述】:

我有一个表,由一列组成,每行有 100 个字符串。添加了第二列以容纳结果。我需要修改某些固定位置元素并计划执行以下操作:

UPDATE myData
SET newData =  REPLACE(oldData,SUBSTRING(eftnwsfull, 16,2),'OC')

位置 16,2 的元素是 '17'。但是,如果字符串的其他部分(不在位置 16,2)恰好是 '17' 也将更改为 'OC'。

我很困惑为什么会发生这种情况,因为我正在指定进行替换的确切位置。我做错了什么?

【问题讨论】:

  • 这是预期的; REPLACE 用第三个替换第一个参数中与第二个不匹配的任何内容
  • 我的印象是 SUBSTRING 会“过滤”它。好的,还有其他方法吗?
  • 你能澄清一下你想替换什么吗?
  • 用一个例子来说明问题的最好方法之一。

标签: sql sql-server tsql replace substring


【解决方案1】:

试试STUFF

UPDATE myData
SET newData = STUFF(oldData, 16, 2, 'OC')

【讨论】:

  • Cheers STUFF 完美地完成了这项工作。谢谢
【解决方案2】:

这里有几种方法(请测试,因为偏移量可能是一次性的)..

SET newdata = SUBSTRING(oldData, 1, 15) + 'OC' + SUBSTRING(oldData, 18, LEN(oldData) - 17)

SET newdata = LEFT(oldData, 15) + 'OC' + RIGHT(oldData, LEN(oldData) - 17)

【讨论】:

    猜你喜欢
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多