首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql查询的正则表达式?

mysql查询的正则表达式?
EN

Stack Overflow用户
提问于 2011-06-11 02:02:54
回答 3查看 465关注 0票数 0

比方说,我在mysql数据库表中有一个varchar(18) field(name:firmware)

字符串格式可能类似于:ABC100-DE-3.10-0347,也可能类似于ABC100-DE-3.1-347。基本上,我唯一可以依赖的就是"-" delimiter,最后一部分(0347,347)称为内部版本号。

3.1/3.10部件称为版本号。是否可以仅从该字段中选择内部版本号和版本号?我怀疑这个查询可能会把帮助变成正则表达式,因为字符串函数不能完成这项工作。

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-11 02:14:19

试一试:

代码语言:javascript
复制
select SUBSTRING_INDEX(theField,'-',-1) as buildNumber,
       SUBSTRING_INDEX(SUBSTRING_INDEX(theField,'-',-2),'-',1) as versionNumber
from theTable
票数 2
EN

Stack Overflow用户

发布于 2011-06-11 02:15:27

当然-可以尝试像[^-]+-[^-]+-([0-9\.]+)-([0-9]+)这样的东西,其中第一个捕获组是您的版本号,第二个是内部版本号。

具体地说,第一组查找数字和句点序列,第二组查找数字序列。

票数 0
EN

Stack Overflow用户

发布于 2011-06-11 02:18:06

您正在寻找的RegEx:^(?:\w[\w\d]*\-)+(\d[\d\.]*)

根据您在哪里使用它,您可能需要开始和结束分隔符:/^(?:\w[\w\d]*\-)+(\d[\d\.]*)/

假设第一次分隔符(-)后面跟一个十进制数字时,这就是您的版本号。

不是百分之百确定的MySQL,但类似于...

代码语言:javascript
复制
SELECT * FROM `MyTable` WHERE `MyColumn` REGEXP '^(?:\w[\w\d]*\-)+(\d[\d\.]*)'

..。也许行得通。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6310338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档