Фильтр разделенных запятыми строковых параметров в предложении where my SQL
Я пытаюсь отфильтровать записи с помощью предложения where в процедуре на основе значений входных параметров IN я написал хранимую процедуру в своем SQL как показано ниже :
DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_get_logs_Test`(IN `p_Bot_Ids` VARCHAR(500)) NO SQL select id, bot_id, log_level,log_type,time_stamp,finger_print,windows_identity,machine_name,process_name,process_version ,job_Id,robot_name,machine_Id,file_name,message,created_date from log where id < 200 and bot_id IN (p_Bot_Ids)$$ DELIMITER ;
Что я уже пробовал:
Мой "p_Bot_Ids" - это строка, разделенная запятыми. Если я передам "1,2", то его фильтрация будет только с "1". если я передам "2,1", то его фильтрация будет только с "2".
Кроме того, мои "p_Bot_Ids" также могут быть нулевыми.В таком случае мне нужно вытащить все записи.
Давайте рассмотрим, что в моей таблице есть 50 записей. Если я передам "p_Bot_Ids" = "1,2,3", мне нужно будет получить только записи 1,2,3 Ids(всего 3 строки). Если я передам "p_Bot_Ids" = NULL, то я должен получить все свои 50 записей.
PIEBALDconsult
Я не знаком с MySQL, но как насчет чего-то подобного, что может работать с SQL Server:
Где CHARINDEX ( ',' + bot_id + ',' , ', ' + p_Bot_Ids + ',' ) > 0