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

时间:2019-03-07 07:44:29

标签: mysql

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

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

011004 , 011003-B

我所能做的就是从短划线中删除。请帮助我。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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 |
+-----------------------+