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

时间:2013-02-16 10:54:56

标签: sqlite position substring

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

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

SELECT DISTINCT SUBSTR(column,INSTR('.',column)+1) FROM table

但我的SQLite版本不支持INSTR。

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

2 个答案:

答案 0 :(得分:7)

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

  

select distinct replace(column_name,rtrim(column_name,   从table_name;

替换(column_name,'。','')),'')

column_name是您拥有文件名的列的名称(文件名可以有多个.

table_name是您表格的名称

答案 1 :(得分:5)

尝试使用ltrim(X, Y)功能,这就是the doc所说的内容:

  

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

将所有字母列表列为第二个参数,例如

SELECT ltrim(column, "abcd...xyz1234567890") From T

应删除从左到右的所有字符.。如果您需要不带点的扩展名,请在其上使用SUBSTR。当然这意味着文件名可能不包含多一个点。

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