我是MySQL的新手。我正在使用数据库。我想使用电影ID获取数据。这里的电影是 TEXT 字段。
+----------+---------+-------+
| id | genre | movie |
+----------+---------+-------+
| 1 | 1 | 1 |
| 2 | 8 | 2 |
| 3 | 3 | 1,2 |
| 4 | 2 | 2 |
| 5 | 8 | 2,1 |
| 6 | 3 | 1,2,3 |
+----------+---------+-------+
我使用了以下查询,
SELECT id FROM t_table WHERE movie IN (2)
它的给予,id(2,4,5)。但我想要(2,3,4,5,6)。
答案 0 :(得分:4)
请尝试以下查询。在where子句中使用LIKE运算符。
SELECT id FROM t_table WHERE movie LIKE "2" OR movie LIKE "2,%" OR movie LIKE "%,2" OR movie LIKE "%,2,%"
答案 1 :(得分:2)
改为使用@Override
public void onDestroy() {
try{
if(mHandleMessageReceiver!=null)
unregisterReceiver(mHandleMessageReceiver);
}catch(Exception e){}
super.onDestroy();
}
方法:
find_in_set
答案 2 :(得分:0)
这是我可以在SQL中使用LIKE运算符给你的最简单的查询。
SELECT id FROM t_table WHERE movie LIKE "2" OR movie LIKE "%,2," OR movie LIKE "2,%" OR movie LIKE "%,2%"
这意味着列中可以有4个条件:
电影栏目中只有2个 电影栏可能有2,在其中 电影栏只有2个,在里面 电影栏只有,2在其中
有用的链接:http://www.w3schools.com/sql/sql_like.asp
我希望这会对你有所帮助。
答案 3 :(得分:0)
上面提到的所有查询都很好,但是当你有'1,2,3'或'2'等数据时会失败。 如果你必须处理OR子句,那么你必须在遇到场景时继续添加OR子句,并且最终会有一个长查询。
我的建议是使用正常用于此目的的正则表达式,功能强大且简洁。对于你我已经设计过 - select * from MOVIES where REGEXP_LIKE (mov, ',?(^[^2]*2[^2]*$)(\s|\S)?,?');
试一试。