用于MYSQL的REGXP

用于MYSQL的REGXP,mysql,sql,regex,select,mariadb,Mysql,Sql,Regex,Select,Mariadb,为了使这尽可能快,我有以下字符串 SIP/5106-0000235f 在这种情况下,我只想捕捉SIP/直到-so之后的部分 5106 我试了几次,但结果总是错的 如果有人能帮忙,我将不胜感激。您可以使用regexp\u replace(): 如果您对非正则表达式解决方案满意。您可以尝试使用SUBSTRING\u INDEX SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('SIP/5106-0000235F', 'SIP/', -1),'-', 1) 假设:

为了使这尽可能快,我有以下字符串

SIP/5106-0000235f
在这种情况下,我只想捕捉SIP/直到-so之后的部分

5106 
我试了几次,但结果总是错的


如果有人能帮忙,我将不胜感激。

您可以使用
regexp\u replace()

如果您对非正则表达式解决方案满意。您可以尝试使用
SUBSTRING\u INDEX

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('SIP/5106-0000235F', 'SIP/', -1),'-', 1)

假设:
SIP/
&
-
将只出现一次,如示例中提供的那样

您使用的是什么版本的mysql?到目前为止,您尝试了哪些正则表达式?这种格式一致吗?您可以对
SIP/
使用
replace
,然后对
-
使用
locate
。以获取之间的整数。但它不会验证是否存在整数。我对mysql了解不多。如果它支持正面外观,这个模式应该可以工作:(?mysql veriosn是mysql版本15.1发行版10.2.21-MariaDB,我拥有的最接近的马赫数是\SIP\/(*)(*))\-,我真的很想让你解释substr和定位方法,所以它是mariadb,而不是mysql。参考10.2看起来它使用PCRE,所以应该能够使用lookaheads。感谢它是这个案例的完美解决方案
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('SIP/5106-0000235F', 'SIP/', -1),'-', 1)