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功能的情况下实现它?
以下是仅用于选择文件扩展名的查询(经过测试和验证).你的文件名可以包含任意数量的.字符串 - 它仍然有效
从table_name中选择distinct replace(column_name,rtrim(column_name,replace(column_name,'.','')),'');
column_name就是你有文件名称列的名称(文件名可以有多个.的
table_name 是你的桌子的名字
试试这个ltrim(X, Y)功能,那就是doc所说的:
ltrim(X,Y)函数返回一个字符串,该字符串是通过从X的左侧删除Y中出现的任何和所有字符而形成的.
列出所有字母作为第二个参数,类似于
SELECT ltrim(column, "abcd...xyz1234567890") From T
Run Code Online (Sandbox Code Playgroud)
应该从左边删除所有字符,直到..如果您需要没有圆点的扩展名,请使用SUBSTR它.当然,这意味着文件名可能不包含多一个点.
但我认为在执行查询的代码中提取扩展更简单,更安全.