我正在尝试使用instr()获取给定字符串中文件扩展名的位置。这可能是许多可能的扩展,所以我需要搜索多个子字符串(例如“ jpg”,“ mp4” ...)。
例如,我尝试了OR语句。 instr(string,“ jpg”或“ mp4”),没有运气。
SELECT instr(column, "jpg") FROM table;
任何关于解决方案或替代方案的想法都将受到欢迎。
答案 0 :(得分:2)
这是您所需要的。
SELECT CASE WHEN instr(column, "jpg") > 0
THEN instr(column, "jpg") WHEN instr(column, "mp4") > 0
THEN instr(column, "mp4") ELSE 0 END FROM table;
答案 1 :(得分:0)
假设该列中只能存在'jpg'
,'mp4'
或任何其他扩展名之一,那么您可以使用以下代码:
SELECT instr(column, "jpg") + instr(column, "mp4") + .... FROM table;
对于所有不存在的扩展名instr()
将返回0
,因此结果将是现有扩展名的起始位置。
如果将所有扩展名存储在名称为extensions
的表中,且其列为name
,则可以将其扩展连接到表中并获得结果:
select
t.column, sum(instr(t.column, e.name)) position
from table t cross join extensions e
group by t.column