各位CSDN大神们大家好,我是个对SQL语句不懂的菜鸟,在这里请求帮助。
我这里有大概一万多的字符串,想将指定位数的指定字符串进行替换,比如这串字符“TBS00539B7500XXXL”其中的"XXXL"替换成"3X",只要是我这些字符串第10-13位出现的是“7500”,那么就替换成“AA,”第14-17位出现的是"XXXL",那么就替换成"3X”,并返回为"TBS00539BAA3X"
这样该怎么写呢? 急需帮助,万分感谢
我这里有大概一万多的字符串,想将指定位数的指定字符串进行替换,比如这串字符“TBS00539B7500XXXL”其中的"XXXL"替换成"3X",只要是我这些字符串第10-13位出现的是“7500”,那么就替换成“AA,”第14-17位出现的是"XXXL",那么就替换成"3X”,并返回为"TBS00539BAA3X"
这样该怎么写呢? 急需帮助,万分感谢
select replace(replace(col,'7500','AA'),'XXXL','3X') from tb如果会在其他地方出现,需要用stuff函数
select stuff(col,14,4,'3X') from tb where substring(col,14,4)='XXXL'
select stuff(col,10,4,'AA') from tb where substring(col,10,4)='7500'
如果使用的stuff函数的话第一个执行结束以后符合条件的字符串位数会有变化的吧,会不会影响到第二个函数的执行?
如果7500与XXXL的位置是固定的,不会出现如TBS75009B7500XXXL这样的情况的话
可以直接用replace函数,还比较方便
如果会出现那种情况,就需要用stuff函数来精确定位了,因为用replace的话会把两个7500都替换掉,这应该不是你要的结果我上面stuff函数演示时,特意先操作XXXL的数据,就是因为stuff函数会导致数据位置变化,但是先操作后面的数据不会影响前面的,所以用stuff的话先要处理XXXL
会出现的 那就用stuff了,谢谢大神