使用RegExp从字符串中提取SQL模式

时间:2016-12-22 15:11:31

标签: sql regex mariadb

我目前正在尝试使用MySQL从字符串中提取模式,但遗憾的是还没有达到目标效果。因此,我很乐意得到你的支持。

字符串如下所示:

  

AB3530A / AB476-1

我想只提取这部分:

  

AB476

我已经尝试过以下RegExp:

[A-Z]{2}[0-9]{3}

返回:

  

AB476 -

我也尝试过:

[A-Z]{2}[0-9]{3}([^0-9]|$) 

http://regexr.com/返回AB353AB476但在MariaDB中仅返回AB353

有人知道如何在没有任何其他标志的情况下进行提取吗?

提前致谢。

祝你好运

2 个答案:

答案 0 :(得分:2)

link表明,自10.0.5版本起,MariaDB支持Perl兼容的regexp(“PCRE”)。

然后,此构造应该可以__len__ your_string SELECT REGEXP_SUBSTR(

, '\\b[A-Z]{2}\\d{3}\\b');是“字边界”)

\b应该返回SELECT REGEXP_SUBSTR('AB3530A/AB476-1','\\b[A-Z]{2}\\d{3}\\b');

注意:代替只允许ASCII字符的'AB476',您可以使用[A-Z],这意味着“任何由Unicode标记为字母的字符,只有大写字母”。但我想\\p{Lu}就足够了。

答案 1 :(得分:0)

ShortDive!

你可以试试这个:而不是正则表达式:

SELECT SUBSTR('AB3530A/AB476-1',9,5) constant_length
     , SUBSTRING_INDEX(SUBSTRING_INDEX('AB3530A/AB476-1','/',-1),'-',1) variable_length