首页 > 解决方案 > MYSQL - 解析逗号分隔的数字字符串并将每个数字与设置数字进行比较

问题描述

我在 MySQL 中要求将逗号分隔的数字字符串("2000, 2001, 2002, 2003, 2004")传递到存储过程中,并将每个数字与另一个数字进行比较,例如2005. 如果任何数字大于或等于我的目标2005,我需要执行代码,否则退出循环。我无法弄清楚如何遍历这个逗号分隔的字符串,使用 将每个字符串转换为数字CAST(),并将其与我的目标数字进行比较。

标签: mysqlsqlstored-procedures

解决方案


定义过程如下。

DELIMITER //

CREATE PROCEDURE getValue(txt varchar(100), abc varchar(100))
BEGIN 
    SET @i = 1;
    SET @txt = REPLACE(txt, '"', '');
    SET @last_element = SUBSTRING_INDEX(@txt, ",", -1);

    WHILE @txt != '' DO
        SET @element = SUBSTRING_INDEX(@txt, ",", @i);

        IF CAST(abc AS UNSIGNED) >= CAST(@element AS UNSIGNED)  THEN
            # execute your code
            SET @txt = '';
        ELSE
            IF !LOCATE(',',@txt) && @element = @last_element THEN
                # @element = @last_element comparison is not necessary
                SET @txt = '';
            ELSE
                SET @txt = REPLACE(@txt, CONCAT(@element,","), '');
            END IF;
        END IF;
    END WHILE;

END //

DELIMITER ;

尝试了以下两个过程调用。

call getValue("200,400,100","100");
call getValue("200,400,600","100");

推荐阅读