SQLite:如何选择字符串的一部分?

Man*_*oor 4 sqlite position substring

有包含文件名的表列:image1.jpg,image12.png,script.php,.htaccess,...

我只需要选择文件扩展名.我更愿意这样做:

SELECT DISTINCT SUBSTR(column,INSTR('.',column)+1) FROM table
Run Code Online (Sandbox Code Playgroud)

但我的SQLite版本不支持INSTR.

有没有办法在不使用INSTR功能的情况下实现它?

Aun*_*Aun 7

以下是仅用于选择文件扩展名的查询(经过测试和验证).你的文件名可以包含任意数量的.字符串 - 它仍然有效

从table_name中选择distinct replace(column_name,rtrim(column_name,replace(column_name,'.','')),'');

column_name就是你有文件名称列的名称(文件名可以有多个.

table_name 是你的桌子的名字


ain*_*ain 6

试试这个ltrim(X, Y)功能,那就是doc所说的:

ltrim(X,Y)函数返回一个字符串,该字符串是通过从X的左侧删除Y中出现的任何和所有字符而形成的.

列出所有字母作为第二个参数,类似于

SELECT ltrim(column, "abcd...xyz1234567890") From T
Run Code Online (Sandbox Code Playgroud)

应该从左边删除所有字符,直到..如果您需要没有圆点的扩展名,请使用SUBSTR它.当然,这意味着文件名可能不包含多一个点.

但我认为在执行查询的代码中提取扩展更简单,更安全.