二进制替换

来自 PostgreSQL wiki
跳转到导航跳转到搜索

二进制替换 (bytea 的替换)

库代码片段

binary_replace

适用于 PostgreSQL

9.0+

编写语言

PL/pgSQL

依赖于


此函数等同于文本的内置函数 replace(string text, from text, to text),适用于二进制字符串 (bytea)。

它会在 str 中搜索 s1 的出现并用 s2 替换它们。

CREATE FUNCTION binary_replace(str bytea, s1 bytea, s2 bytea)
  RETURNS bytea as $$
DECLARE
 i int:=position(s1 in str);
 j int;
 l1 int:=length(s1);
 l2 int:=length(s2);
BEGIN
  while (i>0) loop
    str:=overlay(str placing s2 from i for l1);
    j:=position(s1 in substring(str from i+l2));
    if (j>0) then
      i:=i+j-1+l2;
    else
      i:=0;
    end if;
  end loop;
  return str;
END
$$ language plpgsql immutable;