该字段内容是这种形式: 123P123
P后面的内容重复了P前面的内容。
我想把p连同后面的重复内容一起删除。语句该怎么写呢?正则可以吗?谢谢大家!

解决方案 »

  1.   

    说明:substring_index(被截取字段,关键字,关键字出现的次数)
    substring_index(str,delim,count)
    mysql> SELECT SUBSTRING_INDEX(‘www.mysql.com’, ‘.’, 2);
    -> ‘www.mysql’
    mysql> SELECT SUBSTRING_INDEX(‘www.mysql.com’, ‘.’, -2);
    -> ‘mysql.com’
    UPDATE TABLE SET col=SUBSTRING_INDEX(col,"P",1)
      

  2.   

    看来是没办法了
    数据内容中P的个数是不固定的,有的是 123P22P33P123 有的是123P123 我只想把最后重复的那个尾巴删掉。
      

  3.   

    [code=sql]SET @str:='123P22P33P123';
    SET @substr:='P';
    SELECT IF(LOCATE(SUBSTRING_INDEX(@str,@substr,-1),@str)+LENGTH(SUBSTRING_INDEX(@str,@substr,-1))-1=LENGTH(@str),@str,REVERSE(SUBSTR(REVERSE(@str),LENGTH(SUBSTRING_INDEX(@str,@substr,-1))+1+LENGTH(@substr))));code]
      

  4.   

    SET @str:='123P22P33P123';
    SET @substr:='P';
    SELECT IF(LOCATE(SUBSTRING_INDEX(@str,@substr,-1),@str)+LENGTH(SUBSTRING_INDEX(@str,@substr,-1))-1=LENGTH(@str),@str,REVERSE(SUBSTR(REVERSE(@str),LENGTH(SUBSTRING_INDEX(@str,@substr,-1))+1+LENGTH(@substr))));
      

  5.   

    如果使用SQL函数不能准确实现你的需求,写存储过程或者外部应用程序实现吧。