我正在使用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版本的应用程序,因此对数据库的更改越少越好。
答案 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%';返回了预期的结果。 谢谢大家。