張 zi 浩
发布于

OushuDB 实现 substrb

CREATE OR REPLACE FUNCTION substrb(v_text text, start integer, count integer)  
  RETURNS character varying AS  
$BODY$  
  
DECLARE  
ret text default '';  
  
len integer default 0;  
len1 integer default 0;  
  
start1 integer default 0;  
end1 integer;  
  
cc varchar;  
  
BEGIN  
	len = COALESCE(length(v_text), 0);  
	end1 = start + count;  
  
	for pos in 0..len-1 loop  
		if len1 >= start - 1 THEN  
			exit;  
		end if;  
		len1 = len1 + octet_length(SUBSTR (v_text, pos+1, 1));  
		start1 = start1 +1;  
	end loop;  
  
	for pos in start1..len-1 loop  
		cc = SUBSTR (v_text, pos+1, 1);  
		len1 = len1 + octet_length(cc);  
  
		if len1 > end1  THEN  
			exit;  
		end if;  
		ret = ret || cc;  
	end loop;  
    return ret;  
END;  
$BODY$  
  LANGUAGE 'plpgsql' VOLATILE;

评论(2)
  • 張 zi 浩
    張 zi 浩 回复
    罗名岳 罗名岳 2022-05-05 14:52:19

    substrb: 从字符串中指定的开始位置,取得指定字节数的字符串

    是的,Oracle 函数

  • 罗名岳
    罗名岳 回复

    substrb: 从字符串中指定的开始位置,取得指定字节数的字符串

test