【问题标题】:How to use SUBSTRING_INDEX in SQLite?如何在 SQLite 中使用 SUBSTRING_INDEX?
【发布时间】:2014-11-22 23:48:51
【问题描述】:

我有这个 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

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

【问题讨论】:

  • 你读过那个链接吗?我从那里复制了 SQLite 查询!但正如我之前所说,它返回空白输出......
  • substr() 不是这样工作的;您还必须使用instr()

标签: sql database sqlite substring substr


【解决方案1】:

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

sqlite substr 函数不能那样工作。

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

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

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

更多特殊情况,例如参数是否定的,可以在

找到

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

【讨论】:

    【解决方案2】:

    根据: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;
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-11
        • 2023-03-17
        • 2013-04-17
        • 1970-01-01
        • 2023-01-17
        • 2018-03-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多