将逗号分隔的参数传递给mysql中的存储过程
我的表tab1中有字段:将逗号分隔的参数传递给mysql中的存储过程,mysql,Mysql,我的表tab1中有字段: col1 | col2 | id -------------------------- 1,2,3 | 2,3,4,5 | a1 6,7,8,9 | 2,9,11 | a2 我想将这些字段传递给存储过程输入,如中的col1 in('1,2')和col2 in('3,4') 但是它不起作用 像这样的方法应该会奏效: SELECT t.* FROM tab1 t WHERE 1 IN (t.col1) AND 2 IN (t.col1)
col1 | col2 | id
--------------------------
1,2,3 | 2,3,4,5 | a1
6,7,8,9 | 2,9,11 | a2
我想将这些字段传递给存储过程输入,如中的col1 in('1,2')和col2 in('3,4')代码>
但是它不起作用 像这样的方法应该会奏效:
SELECT t.* FROM tab1 t
WHERE 1 IN (t.col1) AND 2 IN (t.col1) ...
AND 3 IN (t.col2) AND 4 IN (t.col2) ...
您需要根据存储过程的输入来构建查询,否则这应该对您有用。发布当前进程
编辑
find_in_set
函数也适用于您,但您仍然需要拆分输入,并对传递给proc的每个数字调用一次(即find_in_set
的第一个参数不能是逗号分隔的列表)。此处引用:您可以发布存储过程吗?并显示所需的结果。
中的语句只能用于值集。这些集合可以通过选择查询(或子查询)获得,如。。。其中col1位于(选择*FROM…
或作为输入查询编译的结果。。。其中col1位于(1,2,3…)
。它不会像那样工作。。。其中col1在col2中
。