将逗号分隔的值字符串转换为mysql存储过程的值



我正在为mysql编写一个存储过程。我正在将examplep-localhost与mariadb一起使用。

存储过程接收一个整数ID,并根据数据库中的ID查找字符串。此字符串包含一个用逗号分隔的数字列表。

我需要在SQL查询中为IN子句使用这个数字字符串。

CREATE PROCEDURE Test(IN id INT)
BEGIN
DECLARE clist VARCHAR(255);
SELECT clists INTO clist
FROM camp 
WHERE cid = id ;

现在是clist,一个varchar变量包含一个字符串中的值列表,如4,6,8。

SELECT  DISTINCT  email
FROM table
WHERE ( col1 IN (clist) OR  col2 IN (clist)

因此,在mysql中,查询变成这样,并且只获取一个ID 4。

SELECT  DISTINCT  email
FROM table
WHERE ( col1 IN ('4,6,8') OR  col2 IN ('4,6,8')

我希望它成为

SELECT  DISTINCT  email
FROM table
WHERE ( col1 IN (4,6,8) OR  col2 IN (4,6,8)

我的问题是-如何删除字符串中的单引号?

谢谢。

使用FIND_IN_SET 可能是最简单(最糟糕(的

WHERE FIND_IN_SET(col1, clist) > 0 OR FIND_IN_SET(col2, clist) > 0 

相关内容

  • 没有找到相关文章

最新更新