Mysql 如何将列值拆分为“IN”条件?

Mysql 如何将列值拆分为“IN”条件?,mysql,sql,jdbc,Mysql,Sql,Jdbc,假设我有一个表t1,它有一个列effective_game,它将存储名称以及COMMA或其他一些预定的字符,如“;”这样我就可以用来过滤了 例如:列值为“game1、game2、game3” 我希望用JDBC编写SQL,如: 从t1中选择*,其中+此处是+有效游戏中的参数'// 如何将列值“game1、game2、game3”拆分为“game1”、“game2”和“game3”这样的集合,以便在中使用来构造where条件?您不需要将逗号分隔的值转换为任何值。 使用FIND_IN_SET MySQ

假设我有一个表t1,它有一个列effective_game,它将存储名称以及COMMA或其他一些预定的字符,如“;”这样我就可以用来过滤了

例如:列值为“game1、game2、game3”

我希望用JDBC编写SQL,如:

从t1中选择*,其中+此处是+有效游戏中的参数'//


如何将列值“game1、game2、game3”拆分为“game1”、“game2”和“game3”这样的集合,以便在中使用来构造where条件?

您不需要将逗号分隔的值转换为任何值。 使用FIND_IN_SET MySQL函数

SELECT * FROM t1 WHERE FIND_IN_SET([SERACHINGFOR], [COMMASEPARATEDLIST])>0
如果必须使用另一个分隔符,请使用“;”,然后你必须欺骗这个系统

SELECT * FROM t1 WHERE CONCAT(";",[SEPARATEDLIST],";") LIKE CONCAT('%;',[SEARCHFOR],';%')

不要像逗号分隔的项目那样存储数据!这只会给你带来很多麻烦@贾尔赫,为什么?你能解释一下吗?那么...怎么样嗯~它适用于逗号的情况,但是当我使用另一个分隔符,如“;”,如果可以的话,试着用逗号。如果您无法在集合[SEARCHFOR]中找到,请替换[THELIST],“;”,“,”>0这不是理想的情况,特别是如果列表中有逗号…理想情况下,@jarlh是正确的-最好不要使用逗号分隔。。。只有当你有3-5个值的时候。处理起来很慢。。。。随着数据库的增长,速度会变慢。