我有一个MySQL数据库表,该表包含整数列run
和另一列filename
varchar,其典型值如RUN0001.FTS或3DS0231.FTS或3RUN0010.FTS
我需要检查run
和filename
列中的值。处方是我提取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');
输出:
演示在这里:
Rextester
关于mysql - MySQL正则表达式选择字符串中的最后一个整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43132251/