我有一个 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正则表达式选择字符串中的最后一个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43132251/