删除MySQL前两个破折号之间的任何内容

问题描述 投票:-2回答:2

美好的一天,我只是想请求一个选择查询的帮助,以选择一些字符,但删除两个破折号之间的任何内容,例如:

011-12-004 , 011-32-003-B

011004 , 011003-B

我所能做的就是从一个破折号中删除。请帮我。

mysql
2个回答
1
投票

我不太确定如何区分-32-与-003-,我猜你应该替换匹配-(number here)-的模式。

MySQL 8.0你可以使用REGEXP_REPLACE()功能。

SELECT REGEXP_REPLACE(text,'-[0-9]+-','',1,0,'c') FROM your_table;

输出将是:

011004
011003-B

0
投票

这可能不太对,但足够接近......

SET @s = '011-12-004 , 011-32-003-B';
SELECT CONCAT(MID(@s,1,CHAR_LENGTH(SUBSTRING_INDEX(@s,'-',1))),MID(@s,CHAR_LENGTH(SUBSTRING_INDEX(@s,'-',2))+2,1000))x;

+-----------------------+
| x                     |
+-----------------------+
| 011004 , 011-32-003-B |
+-----------------------+
© www.soinside.com 2019 - 2024. All rights reserved.