我需要将存储过程中的逗号分隔项目ID传递给函数
存储过程
CREATE PROCEDURE `spGetData`(
)
BEGIN
SET SESSION group_concat_max_len = 10000000;
set @leadProjectIDs = (SELECT distinct cast(group_concat(ProjectID separator ',')
as char(10000000))
from
project pr where Status = 2);
select fnCount(@leadProjectIDs) as Count;
END
功能是
CREATE FUNCTION `fnCount`(
_projectIds varchar(800)
) RETURNS decimal(10,2)
Begin
Set @LeadsCount = (Select count(*) from project where projectid in(_projectIds));
return @LeadsCount;
END
但是上面的功能不会返回任何计数。
我在这里提到的SP和函数只是例如,我使用Function来获取数据,因为它有更多的条件,然后在这里提到加入。
所以我只想知道,我如何通过1,2,3,4等项目并从MYSQL中的函数获取结果。
答案 0 :(得分:0)
尝试使用INSTR
功能:
CREATE FUNCTION `fnCount`(
_projectIds varchar(800)
) RETURNS decimal(10,2)
Begin
Set @LeadsCount = (Select count(*)
from project
where INSTR(_projectIds, concat(',', projectid, ',')) > 0);
return @LeadsCount;
END
确保_projectIds参数中的每个项目都具有格式,projectid,
。另外,请注意,可以在该字符串上连接项目ID的限制,它可能会在某些时候爆炸。