如何将字符串所在内存地址和字符串娌⒒

发布网友 发布时间:2022-04-24 14:07

我来回答

1个回答

热心网友 时间:2023-10-15 17:14

代码如下:CREATE PROCEDURE sp_str ( IN p_str VARCHAR(50), /*原始字符串*/ IN p_begin_str VARCHAR(50), /*要匹配的起始字符串*/ IN p_end_str VARCHAR(50)) /*要匹配的结束字符串*/ OUT p_result VARCHAR(50)) /*返回结果*/ NOT DETERMINISTIC SQL SECURITY DEFINER COMMENT '' BEGIN DECLARE m_len INT DEFAULT 0; DECLARE m_index INT DEFAULT 0; /*计算第一个匹配字符串的索引位置*/ select locate(p_begin_str,p_str)+char_length(p_begin_str) into m_index; /*计算第一个匹配字符串的长度*/ select locate(p_end_str,p_str,m_index) into m_len; select SUBSTRING(p_str,m_index,m_len-m_index) INTO p_result ; END; 执行: CALL sp_str('[]abcd[12345]aa[]ss','abcd[',']',@result); 返回值 @result 为12345 call sp_str('[]abcd[sdww]aa[]ss','abcd[',']',@result); 返回值 @result 为sdww 如果不用存储过程,可以直接写sql语句实现: 代码如下:select SUBSTRING( ']abcd[12345]111[]', locate('abcd[',']abcd[12345]111[]')+CHAR_LENGTH('abcd['), locate(']',']abcd[12345]111[]',CHAR_LENGTH('abcd['))- (select locate('abcd[',']abcd[12345]111[]')+CHAR_LENGTH('abcd[')) ) 返回值为 12345

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com