You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中如何从网址URL提取域名部分的首个单词

PostgreSQL提取网址核心词的正确实现

你原来的代码存在两个明显问题:

  • SPLIT_PART函数的分段位置计数从1开始,传入0会返回空值,无法获取有效分段
  • 硬编码替换协议、www.前缀的逻辑兼容性极差,遇到不带www.的域名、带路径/端口的地址、其他子域名前缀时会直接匹配错误

更稳妥的实现方式是直接通过正则捕获目标内容,不需要先替换再拆分,一步即可兼容绝大多数常见网址格式:

-- 测试验证不同格式的网址提取效果
WITH test_urls AS (
    SELECT unnest(ARRAY[
        'https://www.happy.com',
        'http://happy.com',
        'https://www.happy.com/path/to/page?id=1',
        'https://happy.cn:8080/api/list',
        'http://www.happy.co.uk'
    ]) AS url
)
SELECT 
    url,
    SUBSTRING(url FROM 'https?://(?:www\.)?([^./:]+)') AS target_word
FROM test_urls;

正则逻辑说明

  • https?://:匹配http://或https://协议头
  • (?:www\.)?:可选匹配www.前缀,该部分为非捕获组,不会计入最终提取结果
  • ([^./:]+):捕获连续的非.、非/、非:字符,遇到域名分隔点、路径斜杠、端口冒号就自动停止匹配,正好提取出需要的核心词

如果你的网址存在m.、api.这类其他固定子域名前缀,只需要修改正则里的前缀匹配部分即可,比如改成(?:www\.|m\.|api\.)?就能覆盖对应场景。

内容的提问来源于stack exchange,提问作者Gordan84

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 01:51:20