如何在SQLite中使用子字符串_索引?

如何在SQLite中使用子字符串_索引?,sql,database,sqlite,substring,substr,Sql,Database,Sqlite,Substring,Substr,我有一个SQL查询: SELECT DISTINCT SUBSTRING_INDEX(value,'_',1) FROM category; 这在我的MySQL数据库上没有问题 我试图将它用于我的SQLite数据库,但它给出了关于SUBSTRING\u INDEX命令的错误。因此,我使用了这个查询: SELECT DISTINCT substr(value,'_',1) FROM category; SELECT DISTINCT value FROM category 这将返回一个空的结

我有一个SQL查询:

SELECT DISTINCT SUBSTRING_INDEX(value,'_',1) FROM category;
这在我的MySQL数据库上没有问题

我试图将它用于我的SQLite数据库,但它给出了关于SUBSTRING\u INDEX命令的错误。因此,我使用了这个查询:

SELECT DISTINCT substr(value,'_',1) FROM category;
SELECT DISTINCT value FROM category
这将返回一个空的结果集。然后,我尝试了这个查询:

SELECT DISTINCT substr(value,'_',1) FROM category;
SELECT DISTINCT value FROM category

这很有效。有什么问题吗?

您不应该以使用SUBSTR的方式使用SUBSTR。试着这样写:

SELECT DISTINCT SUBSTR(value,'_', 2) FROM category;
使用SUBSTR的最佳方法是以正确的方式进行设置:

SELECT DISTINCT SUBSTR(value,'3', 1) FROM category; // Where 3 represents index from which you want to substring data

当然现在已经很晚了,但是对于其他可能看到这个问题的人,让我把这个放在这里

sqlite substr函数不是这样工作的

它需要3个参数。第一个是正在搜索的字符串,第二个和第三个都是整数

第二个参数表示要获取的子字符串的起始索引,第三个参数表示子字符串将具有的字符数。如果省略第三个参数,则子字符串将以第二个参数开始,并继续到所提供字符串的结尾

最后请注意,索引是基于1的,即字符串中最左边的字符位于索引1,而不是0

更多的特殊情况,如参数为负值时,可在

根据: substrX,Y,Z函数返回输入字符串X的子字符串,该字符串以第Y个字符开头,长度为Z个字符

语法 substr字符串,开始,长度

根据:

内置标量SQL函数的说明 instrX,Y函数查找字符串X中第一个出现的字符串Y,并返回前面的字符数加1,如果在X中找不到Y,则返回0

请在下面查询已报告的病例:

SELECT DISTINCT
SUBSTR(value, (INSTR(value, '_')+1), (LENGTH(value)-INSTR(value, '_')))
FROM category;

你读过那个链接吗?我从那里复制了SQLite查询!但正如我之前所说,它返回空白输出…这不是工作原理;您还必须使用。