在SQLite中查询MIN()SUBSTR()

时间:2014-03-04 21:01:44

标签: sqlite

我在SQLite中有一个表“produit”,我希望通过子串“Code”得到min而不是表行,这是我的查询:

select MIN (substr(Code_produit,1,charindex('-',Code,1))+1)
from produit
where (substr(Code,1,charindex('-',Code_produit,1)) + 1)
      not in (select (substr(Code,1,charindex('-',Code_produit,1))) from produit)

例如:我的行数据“代码”就像这个“PRD-1”

1 个答案:

答案 0 :(得分:0)

以下查询将从代码中提取所有数字:

SELECT CAST(substr(code, instr(code, '-') + 1) AS INTEGER)
FROM produit

(提取的子字符串显式转换为整数,因为字符串和数字无法正确比较。)

此查询可用于查找您的值:

WITH numbers(n)
AS (SELECT CAST(substr(code, instr(code, '-') + 1) AS INTEGER)
    FROM produit)
SELECT MIN(n + 1)
FROM numbers
WHERE n + 1 NOT IN numbers

如果您还没有SQLite 3.8.3,则无法使用common table expressions,因此您必须为numbers创建一个视图,或者明确地将其插入查询中:< / p>

SELECT MIN(n + 1)
FROM (SELECT CAST(substr(code, instr(code, '-') + 1) AS INTEGER) AS n
      FROM produit)
WHERE n + 1 NOT IN (SELECT CAST(substr(code, instr(code, '-') + 1) AS INTEGER)
                    FROM produit)