MySQL正则表达式选择字符串中的最后一个整数

标签 mysql regex

我有一个 MySQL 数据库表,其中包含整数列 run 和另一列 filename ,它是 varchar,具有 RUN0001.FTS 或 3DS0231.FTS 等典型值或3RUN0010.FTS

我需要检查 runfilename 列中的值。处方是我提取 filename 列中点字符 (.) 之前的最后一个整数(不带前导零),并将其与 run 列的值进行比较。如何编写 select 语句来执行此比较以返回不具有匹配整数的行?

例如,我尝试构建的正则表达式将从 RUN0001.FTS 中提取 1,或从 3DS0231.FTS 中提取 231,或从 3RUN0010.FTS 中提取 10,然后将其与 run 列,如果两者不匹配则返回主键。

在 Python 中,我会像这样操作变量 filename = '3RUN0010.FTS':

import re
filename = '3RUN0010.FTS'
fileRunNumber = re.findall('\d+', filename)
runNumber = int(fileRunNumber[-1])
print "The integer I want is", runNumber

如何在 MySQL 语句中执行此操作?

谢谢, 艾娜。

最佳答案

您可以尝试以下查询:

SELECT CAST(SUBSTRING(col, INSTR(col, '.') - 4, 4) AS UNSIGNED) AS theNumber
FROM yourTable

数据:

CREATE TABLE yourTable (col varchar(55));
INSERT INTO yourTable (col)
VALUES
    ('RUN0001.FTS'),
    ('3DS0231.FTS'),
    ('3RUN0010.FTS');

输出:

enter image description here

此处演示:

Rextester

关于MySQL正则表达式选择字符串中的最后一个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43132251/

相关文章:

php - 如何导出为不带指数的excel格式

php - 获取特定用户的 ID

mysql - 获取mysql中选定值的平均值

Python 正则表达式无法找到模式 - 在 Apache Spark 上使用 pyspark

python - 正则表达式的pattern.match不起作用

php - 从数据库中获取一行并替换其中的一些内容

javascript - 在提交时使用 post 将 Javascript 对象传递给 PHP,并将数据存储在 mySQL DB 中

Java正则表达式单词提取排除特殊字符

javascript - 获取白银或黄金汇率

regex - Groovy 提取字符前的子字符串