我有一个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');


输出:

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

演示在这里:

Rextester

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

10-13 07:34