android - Sqlite:遍历字符串字段的子字符串

标签 android sql sqlite for-loop substring

我有一个包含一串数字的字段

 "2002 2005 2001 2006 2008 2344"

我们最好假设空格是分隔符,否则假设它们的长度为 4 个字符。

我可以选择一个子字符串:

SELECT substr(years,1,4)  FROM TABLE 

但不知道如何检查每一个。我试图找到包含最接近 0 的数字的行。

我可以ORDER BYLIMIT 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/

相关文章:

android - 内容提供者 - 多个 where 参数

php - 根据给定的 ID 使用相同的值更新表

sql - 您的解释计划中的 PARTITION RANGE ALL 不好吗?

mysql - SQL 查询仅从另一个表中选择具有一组独占相关实体的结果

java - 应用程序第一次启动时,自定义 GUI 不会显示

java - 等待对话框关闭以将项目添加到回收器 View

sql - 如何在SQL Server 2005中使用LIMIT关键字?

mysql - 我可以开始记录应用程序发起的 SQL 查询,以便了解它在做什么吗?

安卓 SQLite : nullColumnHack parameter in insert/replace methods

android - 如果我在 Widget Info XML 文件中将 "updatePeriodMillis"字段留空会发生什么?