求教怎么批量删除数据库中某一字段的部分数据?

时间:2021-08-30 22:21:33
该字段内容是这种形式:  123 P 123
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 我只想把最后重复的那个尾巴删掉。

#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函数不能准确实现你的需求,写存储过程或者外部应用程序实现吧。

#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 我只想把最后重复的那个尾巴删掉。

#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函数不能准确实现你的需求,写存储过程或者外部应用程序实现吧。

#6


感谢大家,用二楼的函数,一条一条地用土办法给解决了。 求教怎么批量删除数据库中某一字段的部分数据?