Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Sqlite选择字符串的唯一段_Android_Sqlite - Fatal编程技术网

Android Sqlite选择字符串的唯一段

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

我正在使用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,其中的颜色类似于‘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之类的知识。