如何在SQLite中使用SUBSTRING_INDEX?

时间:2014-09-28 13:36:54

标签: sql database sqlite substring substr

我有这个SQL查询:

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

这对我的MySQL数据库没有任何问题。

我尝试将它与我的SQLite数据库一起使用,但它给出了有关SUBSTRING_INDEX命令的错误。所以,我使用了这个查询:

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

返回空结果集。然后,我尝试了这个查询:

SELECT DISTINCT value FROM category

这很好用。可能是什么问题?

3 个答案:

答案 0 :(得分:0)

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

sqlite substr函数无法正常工作。

需要3个参数。第一个是您要搜索的字符串,而第二个和第三个是整数。

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

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

可以在

找到更多特殊情况,例如参数为否定时

http://www.sqlite.org/lang_corefunc.html

答案 1 :(得分:0)

根据:https://sqlite.org/lang_corefunc.html#substr substr(X,Y,Z) 函数返回输入字符串 X 的子字符串,该子字符串以第 Y 个字符开头,长度为 Z 个字符。

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

根据:https://sqlite.org/lang_corefunc.html

  1. 内置标量 SQL 函数的说明

instr(X,Y) 函数查找字符串 X 中第一次出现的字符串 Y,并返回先前字符的数量加 1,如果在 X 中找不到 Y,则返回 0。

请在以下查询中对报告的案例进行罚款:

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

答案 2 :(得分:-1)

您不应该以使用它的方式使用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