Android Sqlite选择字符串的唯一段
我正在使用Sqlite3.7.15。 我有一个名为color的列,其中包含逗号分隔的数字,例如Color1、Color3、Color15和另一行中只有“Color15”。 我要获取包含“Color1”的所有行Android Sqlite选择字符串的唯一段,android,sqlite,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 a
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,其中的颜色类似于‘Color1’;”–未返回任何行
“sqlite>select _id,color from identity,其中类似“%Color1”的颜色将返回”
8|Color8,Color4,Color3,Color1
9|Color2,Color5,Color3,Color1
3|Color1,Color2,Color3
4|Color1,Color2
5|Color1,Color2,Color3
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
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
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,color from identity,其中类似“%Color1,%”的颜色(注意逗号)-返回
8|Color8,Color4,Color3,Color1
9|Color2,Color5,Color3,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版本,使用核心数据,因此对数据库的更改越少越好。为什么不使用不带核心数据的颜色15
Select color from table where color like '%Color15%'
除此之外,请尝试以下方法:
select color from table where color like '%Color15,%' OR color like '%Color15'
我通过将数据库列更改为逗号分隔的颜色来解决此问题,例如灰色、黑色、紫色,而不是Color1、Color3、Color15。这样,sql语句:从颜色为“%Violet%”的表中选择颜色;返回预期结果。
感谢大家。您可能想了解数据库规范化和3NF之类的知识。