我有一个包含一串数字的字段
"2002 2005 2001 2006 2008 2344"
我们最好假设空格是分隔符,否则假设它们的长度为 4 个字符。
我可以选择一个子字符串:
SELECT substr(years,1,4) FROM TABLE
但不知道如何检查每一个。我试图找到包含最接近 0 的数字的行。
我可以ORDER BY
和LIMIT 1
。
最佳答案
这看起来很丑陋,但它会在一条 SQLlite 语句中选择您需要的所有内容。如果假设日期在当前间隔内,比如 1900..2100,您也可以进行一些优化。在这种情况下,您可以先剪切 2 个选择 B,C (B: 1 union 2) (C: 9 union 0 union 1)
select years2,years from
(
select i1||i2||i3||i4 as years2 from (select '0' as i1
union all
select '1' as i1
union all
select '2' as i1
union all
select '3' as i1
union all
select '4' as i1
union all
select '5' as i1
union all
select '6' as i1
union all
select '7' as i1
union all
select '8' as i1
union all
select '9' as i1) B,
(select '0' as i2
union all
select '1' as i2
union all
select '2' as i2
union all
select '3' as i2
union all
select '4' as i2
union all
select '5' as i2
union all
select '6' as i2
union all
select '7' as i2
union all
select '8' as i2
union all
select '9' as i2) C,
(select '0' as i3
union all
select '1' as i3
union all
select '2' as i3
union all
select '3' as i3
union all
select '4' as i3
union all
select '5' as i3
union all
select '6' as i3
union all
select '7' as i3
union all
select '8' as i3
union all
select '9' as i3) D,
(select '0' as i4
union all
select '1' as i4
union all
select '2' as i4
union all
select '3' as i4
union all
select '4' as i4
union all
select '5' as i4
union all
select '6' as i4
union all
select '7' as i4
union all
select '8' as i4
union all
select '9' as i4) E
) YearsAll
left join YearsTable on (YearsTable.years like '%'||YearsAll.years2||'%')
where YearsTable.years is not null
order by years2 limit 1
关于android - Sqlite:遍历字符串字段的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11737713/