首页
学习
活动
专区
圈层
工具
发布

#find

MySQL FIND_IN_SET 函数递归查询怎么使用

MySQL 的 FIND_IN_SET 函数用于查找一个字符串是否在一个由逗号分隔的字符串列表中。但是,FIND_IN_SET 函数本身不支持递归查询。要实现递归查询,你可以使用 MySQL 的存储过程或自定义函数。 以下是一个使用存储过程实现递归查询的示例: 1. 创建存储过程: ```sql DELIMITER // CREATE PROCEDURE RecursiveFindInSet(IN search_string VARCHAR(255), IN search_list VARCHAR(255)) BEGIN DECLARE delim_pos INT DEFAULT 0; DECLARE current_value VARCHAR(255); IF search_list IS NOT NULL AND LENGTH(search_list) > 0 THEN SET delim_pos = LOCATE(',', search_list); IF delim_pos = 0 THEN SET delim_pos = LENGTH(search_list) + 1; END IF; SET current_value = SUBSTRING(search_list, 1, delim_pos - 1); IF FIND_IN_SET(search_string, current_value) THEN SELECT current_value; END IF; SET search_list = SUBSTRING(search_list, delim_pos + 1); CALL RecursiveFindInSet(search_string, search_list); END IF; END // DELIMITER ; ``` 2. 使用存储过程进行递归查询: ```sql CALL RecursiveFindInSet('value_to_search', 'value1,value2,value3'); ``` 这个存储过程将递归地查找 `value_to_search` 是否在 `value1,value2,value3` 中,并返回匹配的值。 请注意,这个示例仅用于演示目的,实际应用中可能需要根据具体需求进行调整。在实际应用中,如果需要递归查询,建议使用递归公共表达式 (Recursive CTE),因为它们通常比存储过程更高效。但是,MySQL 不支持递归 CTE,所以在这种情况下,存储过程可能是更好的选择。... 展开详请
MySQL 的 FIND_IN_SET 函数用于查找一个字符串是否在一个由逗号分隔的字符串列表中。但是,FIND_IN_SET 函数本身不支持递归查询。要实现递归查询,你可以使用 MySQL 的存储过程或自定义函数。 以下是一个使用存储过程实现递归查询的示例: 1. 创建存储过程: ```sql DELIMITER // CREATE PROCEDURE RecursiveFindInSet(IN search_string VARCHAR(255), IN search_list VARCHAR(255)) BEGIN DECLARE delim_pos INT DEFAULT 0; DECLARE current_value VARCHAR(255); IF search_list IS NOT NULL AND LENGTH(search_list) > 0 THEN SET delim_pos = LOCATE(',', search_list); IF delim_pos = 0 THEN SET delim_pos = LENGTH(search_list) + 1; END IF; SET current_value = SUBSTRING(search_list, 1, delim_pos - 1); IF FIND_IN_SET(search_string, current_value) THEN SELECT current_value; END IF; SET search_list = SUBSTRING(search_list, delim_pos + 1); CALL RecursiveFindInSet(search_string, search_list); END IF; END // DELIMITER ; ``` 2. 使用存储过程进行递归查询: ```sql CALL RecursiveFindInSet('value_to_search', 'value1,value2,value3'); ``` 这个存储过程将递归地查找 `value_to_search` 是否在 `value1,value2,value3` 中,并返回匹配的值。 请注意,这个示例仅用于演示目的,实际应用中可能需要根据具体需求进行调整。在实际应用中,如果需要递归查询,建议使用递归公共表达式 (Recursive CTE),因为它们通常比存储过程更高效。但是,MySQL 不支持递归 CTE,所以在这种情况下,存储过程可能是更好的选择。

错误‘1004’:不能取得类 WorksheetFunction 的 Find 属性,请问如何修改?

错误1004’:不能取得类 WorksheetFunction 的 Find 属性”,请问如何修改?

领券