我在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”
答案 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)