有包含文件名的表列:image1.jpg,image12.png,script.php,.htaccess,...
我只需要选择文件扩展名。我宁愿这样做:
SELECT DISTINCT SUBSTR(column,INSTR('.',column)+1) FROM table
但我的 SQLite 版本不支持 INSTR。
有没有办法在不使用 INSTR 函数的情况下实现它?
以下是仅用于选择文件扩展名的查询(经过测试和验证)。您的文件名可以包含任意数量的.
字符 - 仍然可以工作
从表名中选择不同的替换(列名,rtrim(列名,替换(列名,'.','')),'');
column_name
是您拥有文件名的列的名称(文件名可以有.
多个
table_name
是你的桌子的名字
试试这个ltrim(X, Y)
功能,这就是文档所说的:
ltrim(X,Y) 函数返回一个字符串,该字符串是通过从 X 的左侧删除 Y 中出现的任何和所有字符而形成的。
列出所有字母作为第二个参数,例如
SELECT ltrim(column, "abcd...xyz1234567890") From T
这应该从左边删除所有字符,直到.
. 如果您需要不带点的扩展名,请使用SUBSTR
它。当然,这意味着文件名不能包含多个点。
但我认为在执行查询的代码中提取扩展名更容易、更安全。