mysql - MYSQL - 解析逗号分隔的数字字符串并将每个数字与设置数字进行比较
问题描述
我在 MySQL 中要求将逗号分隔的数字字符串("2000, 2001, 2002, 2003, 2004")
传递到存储过程中,并将每个数字与另一个数字进行比较,例如2005
. 如果任何数字大于或等于我的目标2005
,我需要执行代码,否则退出循环。我无法弄清楚如何遍历这个逗号分隔的字符串,使用 将每个字符串转换为数字CAST()
,并将其与我的目标数字进行比较。
解决方案
定义过程如下。
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");
推荐阅读
- javascript - 在打字稿中对不同的数组进行排序
- java - 如何在 Launch4j 中添加 VM 参数
- python - 如何在两个函数 Tkinter python 中使用 root.after
- javascript - 即使它打印在 console.log 中,我也无法映射对象数组
- tensorflow - 在 tensorflow 2 中,使用 model.fit 会自动在 BatchNorm 层中设置“训练”标志吗?
- hana - 是否有使用 sap-cloud-sdk for JS 与 HANA DB 连接的本机方式?
- xml - 当特定值匹配时从 xml 中选择值
- python - 无法在 PyCharm 上安装 TensorFlow
- c# - 当 DropDownList 为 NULL 时返回所有数据
- android - 如何使用改造显示字段缺少来自 api 的错误响应?