strposrev
来自 PostgreSQL 维基
跳转到导航跳转到搜索
字符串函数 strposrev(instring text, insubstring text) 返回字符串中子字符串的位置,从末尾开始,与内置函数 strpos(text,text) 相反。它类似于 vb 中的 instrrev() 函数,或 java 和 csharp 中的 string.lastindexof() 方法。
CREATE OR REPLACE FUNCTION strposrev(instring text, insubstring text)
RETURNS integer AS
$BODY$
DECLARE result INTEGER;
BEGIN
IF strpos(instring, insubstring) = 0 THEN
-- no match
result:=0;
ELSEIF length(insubstring)=1 THEN
-- add one to get the correct position from the left.
result:= 1 + length(instring) - strpos(reverse(instring), insubstring);
ELSE
-- add two minus the legth of the search string
result:= 2 + length(instring)- length(insubstring) - strpos(reverse(instring), reverse(insubstring));
END IF;
RETURN result;
END;
$BODY$
LANGUAGE plpgsql IMMUTABLE STRICT
COST 4;