据我所知,MySQL不支持从正则表达式匹配中检索捕获组的值。我发现了一个服务器端扩展(lib_mysqludf_preg),它将添加此功能,但无法在我的环境中安装此扩展。
因此,我正在寻找一种方法来模拟将正则表达式匹配的一部分捕获为SQL查询中的一列。
我的数据如下所示(并且我无法更改服务器上的数据格式):
+-----------------------------+
| Version |
+-----------------------------+
| 1.2.3.4 |
| 10.20.30.40 |
| Obsidian-1.2.3.4 |
| Obsidian-11.21.31.41 |
| custom\Obsidian-11.21.31.41 |
| custom\11.21.31.41 |
+-----------------------------+
我正在寻找每行的最后4位数字。数字始终是值的最后一部分,并且始终由点分隔。以下正则表达式将匹配我想要的所有值:
.*[[:digit:]]+\\.[[:digit:]]+\\.[[:digit:]]+\\.[[:digit:]]+$
我希望得到的结果是一些功能组合,这些功能可以将每个数字捕获为一列,这样我就可以在查询的where子句中使用该数字,并能够获取版本号。
SELECT
function1(...) as version1,
function2(...) as version2,
function3(...) as version3,
function4(...) as version4
FROM Version
WHERE version1 > 5;
版权声明:本文为weixin_32446549原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。