各位CSDN大神们大家好,我是个对SQL语句不懂的菜鸟,在这里请求帮助。
   
     我这里有大概一万多的字符串,想将指定位数的指定字符串进行替换,比如这串字符“TBS00539B7500XXXL”其中的"XXXL"替换成"3X",只要是我这些字符串第10-13位出现的是“7500”,那么就替换成“AA,”第14-17位出现的是"XXXL",那么就替换成"3X”,并返回为"TBS00539BAA3X"
这样该怎么写呢?       急需帮助,万分感谢    

解决方案 »

  1.   

    这个函数replace(),你会用吗?只要你清楚你的规则,用这个函数批量替换即可拉。
      

  2.   

    会有别的位置也出现7500或者XXXL吗?如果不会直接用replace函数
    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'
      

  3.   

    我大概有一万多行字符,这些行的字符 有很多会出现"7500"和“XXXL”呢,目的就是要完成批量的替换啊不过大神你的语句我好像看懂了点  去试试先
      

  4.   

    刚才我没明白你的意思,是不是这个意思“一个字符串中是否还会出现7500或者XXXL"?会出现。
    如果使用的stuff函数的话第一个执行结束以后符合条件的字符串位数会有变化的吧,会不会影响到第二个函数的执行?
      

  5.   

    我问的意思是,7500这个字符串会不会出现在第10-13位以外的位置上,XXXL也是
    如果7500与XXXL的位置是固定的,不会出现如TBS75009B7500XXXL这样的情况的话
    可以直接用replace函数,还比较方便
    如果会出现那种情况,就需要用stuff函数来精确定位了,因为用replace的话会把两个7500都替换掉,这应该不是你要的结果我上面stuff函数演示时,特意先操作XXXL的数据,就是因为stuff函数会导致数据位置变化,但是先操作后面的数据不会影响前面的,所以用stuff的话先要处理XXXL
      

  6.   


    会出现的 那就用stuff了,谢谢大神