MySQL Split在"SELECT WHERE IN"语句中使用

Rob*_*eid 7 c# mysql sql delimited-text

我一直在搜索各种MySQL网站,希望找到一些可以让我转过头来的东西:

var parameters = "a,b,c,d"; // (Could be any number of comma-delimited values)
Run Code Online (Sandbox Code Playgroud)

进入此(假设我的参数以某种方式成为您在IN块中看到的值):

SELECT * FROM mytable WHERE parametertype IN('a', 'b', 'c', 'd');
Run Code Online (Sandbox Code Playgroud)

但我没有取得很大的成功!我发现的最好的网站是:dev.mysql.com,它讨论了基于分隔符的字符串拆分(在我的情况下是',')虽然它没有找到任何答案...

有没有人知道将逗号分隔的字符串拆分成可在此上下文中使用的字符串组的好方法?

mar*_*ton 6

它可能没有您需要的所有灵活性,但MySQL FIND_IN_SET函数可能就足够了.尽管如此,该组中最多有64个值的硬限制.

例如:

SELECT  *
FROM    mytable
WHERE   FIND_IN_SET( parametertype, 'a,b,c,d' ) != 0
Run Code Online (Sandbox Code Playgroud)

这是一个使用内联MySQL SET('a,b,c,d')的例子- 它的枚举类型.如果正在使用数据模型的规范化,这可能表明某些事情是错误的.但是,它们可以方便地消除连接,或者(如本例所示)与位于数据库外部的复杂信息相关联.