【问题标题】:Sqlite select unique segment of stringSqlite 选择字符串的唯一段
【发布时间】:2014-03-23 21:54:15
【问题描述】:

我使用的是 Sqlite3.7.15。 我有一个名为 color 的列,其中包含逗号分隔的数字,例如Color1、Color3、Color15 和另一行只有“Color15”。 我想获取所有包含“Color1”的行,

Select color from table where color like '%Color1%';

返回包含例如的行颜色 15。 如果我使用

Select color from table where color like '%Color15,%'; //(note comma at end)

我不会得到颜色为 15 的行(如果这是字符串中的最后一项。 我想我可以用逗号终止所有字符串并进行相应调整,但这似乎很笨拙。

我试过instr(color,'Color1')>0; (在 sqlite3.7.15 版本上,但这没有帮助) 我的 sqlite3 数据库支持面向 Android 2.3(姜饼)的应用。

我会尽量让这一点更清楚; 以下是示例查询的前 10 行,均不正确:

1|Color2,Color4,Color3
2|Color6,Color12,Color3
3|Color1,Color2,Color3
4|Color1,Color2
5|Color1,Color2,Color3
6|Color6,Color12,Color3
7|Color2,Color3,Color13
8|Color8,Color4,Color3,Color1
9|Color2,Color5,Color3,Color1
10|Color11,Color12,Color5,Color2,Color1,Color3

“sqlite> select _id,color from identity where color like 'Color1';” – 没有返回行。

“sqlite> select _id,color from identity where color like '%Color1';” - 返回

8|Color8,Color4,Color3,Color1
9|Color2,Color5,Color3,Color1

“select _id,color from identity where color like 'Color1%';” – 返回

3|Color1,Color2,Color3
4|Color1,Color2
5|Color1,Color2,Color3
10|Color11,Color12,Color5,Color2,Color1,Color3

“select _id,color from identity where color like '%Color1%';” – 返回

2|Color6,Color12,Color3
3|Color1,Color2,Color3
4|Color1,Color2
5|Color1,Color2,Color3
6|Color6,Color12,Color3
7|Color2,Color3,Color13
8|Color8,Color4,Color3,Color1
9|Color2,Color5,Color3,Color1
10|Color11,Color12,Color5,Color2,Color1,Color3

select _id,color from identity where color like '%Color1,%';(注意逗号) - 返回

3|Color1,Color2,Color3
4|Color1,Color2
5|Color1,Color2,Color3
10|Color11,Color12,Color5,Color2,Color1,Color3

正确的返回是

3|Color1,Color2,Color3
4|Color1,Color2
5|Color1,Color2,Color3
8|Color8,Color4,Color3,Color1
9|Color2,Color5,Color3,Color1
10|Color11,Color12,Color5,Color2,Color1,Color3

数据库也支持iOS版本的应用,使用Core Data,所以对数据库的改动越少越好。

【问题讨论】:

标签: android sqlite


【解决方案1】:

为什么不直接使用不带 , 的 Color 15?

Select color from table where color like '%Color15%'

或者没有,试试这个:

select color from table where color like '%Color15,%' OR color like '%Color15'

【讨论】:

    【解决方案2】:

    我通过将数据库列更改为逗号分隔颜色解决了这个问题,例如灰色、黑色、紫色而不是 Color1、Color3、Color15。这样,sql语句: Select color from table where color like '%Violet%';返回了预期的结果。 谢谢大家。

    【讨论】:

      猜你喜欢
      • 2018-09-16
      • 2013-02-14
      • 2018-08-27
      • 2014-09-27
      • 2018-02-17
      • 2015-03-31
      • 2015-02-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多