我正在尝试使用 instr() 获取给定字符串中文件扩展名的位置。这可能是许多可能的扩展,所以我需要搜索多个子字符串(例如“jpg”、“mp4”...)。
我尝试了 OR 语句,例如。instr(字符串,“jpg”或“mp4”),没有运气。
SELECT instr(column, "jpg") FROM table;
欢迎任何有关解决方案或替代方案的想法。
这就是你需要的。
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;
假设列中可能仅存在一个或任何其他扩展名'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