用于mysql查询的正则表达式?
比如说,我在mysql数据库表中有一个用于mysql查询的正则表达式?,mysql,regex,string,Mysql,Regex,String,比如说,我在mysql数据库表中有一个varchar(18)字段(名称:firmware) 字符串格式类似于:ABC100-DE-3.10-0347,也可能类似于ABC100-DE-3.1-347。基本上,我唯一可以依赖的是“-”分隔符,最后一部分(0347347)称为buildnumber 3.1/3.10部分称为版本号。是否可以仅从该字段中选择内部版本号和版本号?我怀疑这个查询可能会对regex有所帮助,因为字符串函数无法完成这项工作 谢谢 试一试: select SUBSTRING_IND
varchar(18)字段(名称:firmware)
字符串格式类似于:ABC100-DE-3.10-0347
,也可能类似于ABC100-DE-3.1-347
。基本上,我唯一可以依赖的是“-”分隔符,最后一部分(0347347
)称为buildnumber
3.1/3.10
部分称为版本号。是否可以仅从该字段中选择内部版本号和版本号?我怀疑这个查询可能会对regex有所帮助,因为字符串函数无法完成这项工作
谢谢 试一试:
select SUBSTRING_INDEX(theField,'-',-1) as buildNumber,
SUBSTRING_INDEX(SUBSTRING_INDEX(theField,'-',-2),'-',1) as versionNumber
from theTable
当然-尝试类似于[^-]+-[^-]+-([0-9\.]+)-([0-9]+)
的方法,其中第一个捕获组是您的版本号,第二个是内部版本号
具体来说,第一组查找数字和句点序列,第二组查找数字序列。您要查找的正则表达式:^(?:\w[\w\d]*\-)+(\d[\d\.]*)
根据您使用它的位置,您可能需要开始和结束分隔符:/^(?:\w[\w\d]*\-)+(\d[\d\.]*)/
假设第一次分隔符(-
)后面跟一个十进制数字,这就是您的版本号
不是百分之百确定MySQL,但是类似于
SELECT * FROM `MyTable` WHERE `MyColumn` REGEXP '^(?:\w[\w\d]*\-)+(\d[\d\.]*)'
。。。可能有用