Sqlite选择独特的字符串段

时间:2014-03-23 21:54:16

标签: android sqlite

我正在使用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)

我不会得到Color 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

“源码>选择_id,颜色来自“Color1”之类的颜色;“ - 没有返回任何行。

“源码>选择_id,颜色来自身份,颜色如'%Color1';“ - 返回

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

“选择_id,来自身份的颜色,颜色如'Color1%';” - 返回

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

“选择_id,来自身份的颜色,颜色如'%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

选择_id,颜色来自身份,颜色如'%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

数据库还使用Core Data支持iOS版本的应用程序,因此对数据库的更改越少越好。

2 个答案:

答案 0 :(得分:1)

为什么不使用Color 15而不使用?

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

或者说没错,试试这个:

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

答案 1 :(得分:0)

我通过将数据库列更改为逗号分隔的颜色来解决此问题,例如灰色,黑色,紫色而不是Color1,Color3,Color15。这样,sql语句:从表中选择颜色,如'%Violet%';返回了预期的结果。 谢谢大家。