MySQL-如何在in子句中使用具有逗号分隔字符串值的输入参数
我必须根据字符串类型的列在MySQL中查询一个表MySQL-如何在in子句中使用具有逗号分隔字符串值的输入参数,mysql,split,Mysql,Split,我必须根据字符串类型的列在MySQL中查询一个表 ----------------------------------- id | lookupkeys | productid | ----------------------------------- 1 | key1 | 5GEH03 | 2 | key2 | 7445DW | 3 | key3 | 9DSFDF | 4 | key4
-----------------------------------
id | lookupkeys | productid |
-----------------------------------
1 | key1 | 5GEH03 |
2 | key2 | 7445DW |
3 | key3 | 9DSFDF |
4 | key4 | 5GEH03 |
5 | keyN | 7445DW |
-----------------------------------
在in子句中使用的单个输入参数中接受多个值(逗号分隔)的存储过程
Input : @keys = "key1,key5,key19,key22"
Query : SELECT * FROM MyTable WHERE lookupkeys IN ("key1","key5","key19","key22");
所以基本上我需要一种方法,如何让这个逗号分隔的输入成为IN子句的各个值
下面是一个虚拟sp
CREATE DEFINER=`xxx_xx`@`%` PROCEDURE `sp_demo_fetch_products`(
IN v_lookupkeys VARCHAR(200)
)
BEGIN
SELECT * FROM products_lookup WHERE lookupkeys IN(here I want to use v_lookupkeys)
AND CONDITION_1
AND CONDITION_2
ORDER BY popularity DESC;
END$$
显示存储过程代码和
调用
?如果存储过程中的@keys
设置为set@keys:=
,或多或少类似于set@keys:=p_in_key_参数
,那么应该可以在(@keys)中使用为什么有存储过程?我在这里看不到任何“程序性”的东西!?!但事实上,我不知道IN子句中以逗号分隔的单个值的输入是什么意思。
“为什么有存储过程?我看不出这里有什么‘过程性’?”非常同意@草莓,在这里使用存储过程确实是不合理的,我想在看到完整的存储过程代码之前先做一个注释。这是一个伪代码。用dummy sp更新了我的问题。希望有帮助