strposrev

来自 PostgreSQL 维基
跳转到导航跳转到搜索

库片段

strposrev(text,text)

适用于 PostgreSQL

9.1

PL/pgSQL

依赖于


字符串函数 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;

另请参见