我有这么一段字符串:
2,3,13,5,17,20,7,15,10,现在我想删除“7,”,一开始觉得用LOCATE函数把“7,”的位置取出来,然后用LEFT函数删除就行了,但是后来我发现还有个“17,”,这样的话用LOCATE函数就不能找对位置了,于是我想到用正则把要删除的内容匹配出来得到位置,然后用LEFT去删掉它,可是用正则怎么做到得到匹配值的位置呢?求高人解答。这个是我想到的一种删除子字符串的办法,不知道还有没有别的更好的办法,希望大家指点。

解决方案 »

  1.   

    正则匹配在MYSQL用的功能有限,无法进行定位和替换。你的要求可以如下方法实现。
    一段字符串='2,3,13,5,17,20,7,15,10,';
    select mid(replace(concat(',',一段字符串),',7,',','),2);
      

  2.   


    请解释一下mid的意思,另外如果用concat在替换之前都往字符串前面加上一个逗号的话,那多次操作的话,前面岂不是会有很多逗号啊?
      

  3.   

    SELECT FIND_IN_SET('7','2,3,13,5,17,20,7,15,10,')
      

  4.   

    不是利用MID来去除这个逗号了吗?
      

  5.   


    对的。ACMAIN_CHM给出了不错的办法,虽然我还没有试,不过大概看了一下应该能解决问题,不知道你有什么高见?
      

  6.   

    用REPLACE是最简单的方法,因为你的字符串有可能不止1个,7,