手册的字符串函数和运算符部分相当于String.indexOf
,例如
select position('/' in 'http://paypal-info.com/home.webapps.cgi-bin-limit/webscr.cmd-login-submit');
但是它不提供获得第 n 次出现的选项。
你真的接近这一切都是错误的。您应该使用正确的 URL 解析代码来提取主机部分,而不是尝试自己滚动或使用正则表达式/拆分/字符串修饰。
PostgreSQL 没有原生的 URL/URI 类型,但它的过程语言有,而且包装合适的函数很简单。例如使用 PL/Python:
create language plpythonu;
create or replace function urlhost(url text) returns text
language plpythonu
immutable strict
as $$
import urlparse
return urlparse.urlparse(url).netloc
$$;
然后:
regress=# select urlhost('http://paypal-info.com/home.webapps.cgi-bin-limit/webscr.cmd-login-submit');
urlhost
-----------------
paypal-info.com
(1 row)
如果您更喜欢使用 PL/Perl、PL/V8 或其他什么,那很好。
为了获得最佳性能,您可以编写一个简单的 C 函数并将其公开为扩展。