mysql存储过程逗号分隔的字符串怎么用在in里面
方法1:使用 FIND_IN_SET(推荐小数据量,无需动态SQL)
DELIMITER // CREATE PROCEDURE GetUsersByTags(IN tag_list VARCHAR(255)) BEGIN -- 假设 users 表中有 tags 字段存储如 '1,2,3' 的数据 -- 或者查询 id 在传入列表中的用户 SELECT * FROM users WHERE FIND_IN_SET(id, tag_list) > 0; END // DELIMITER ; CALL GetUsersByIds('1,2,3');方法2:动态 SQL + PREPARE(推荐大数据量,可走索引)
DELIMITER // CREATE PROCEDURE GetUsersByIds(IN id_list VARCHAR(255)) BEGIN SET @sql = CONCAT('SELECT * FROM users WHERE id IN (', id_list, ')'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; END // DELIMITER ; CALL GetUsersByIdsJson('1,2,3');
评论已关闭