P后面的内容重复了P前面的内容。
我想把p连同后面的重复内容一起删除。语句该怎么写呢?正则可以吗?谢谢大家!
6 个解决方案
#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的个数是不固定的,有的是 123P 22 P 33 P 123 有的是 123 P 123 我只想把最后重复的那个尾巴删掉。
数据内容中P的个数是不固定的,有的是 123P 22 P 33 P 123 有的是 123 P 123 我只想把最后重复的那个尾巴删掉。
#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]
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函数不能准确实现你的需求,写存储过程或者外部应用程序实现吧。
#6
感谢大家,用二楼的函数,一条一条地用土办法给解决了。
#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的个数是不固定的,有的是 123P 22 P 33 P 123 有的是 123 P 123 我只想把最后重复的那个尾巴删掉。
数据内容中P的个数是不固定的,有的是 123P 22 P 33 P 123 有的是 123 P 123 我只想把最后重复的那个尾巴删掉。
#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]
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函数不能准确实现你的需求,写存储过程或者外部应用程序实现吧。
#6
感谢大家,用二楼的函数,一条一条地用土办法给解决了。