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

PostgreSQL中如何通过SELECT语句简便实现URL域名后内容的URL编码

简便实现URL域名后部分的编码(无需自定义函数)

当然有更简便的方法!不用折腾自定义函数或扩展,直接用数据库内置的字符串处理+URL编码函数组合就能在SELECT语句里完成需求。

核心思路

先从URL中提取域名之后的部分,再用内置URL编码函数对这部分内容编码,两步合并到同一个SELECT语句即可。

分步实现(以MySQL为例)

  1. 提取域名后的路径部分

    • 如果域名固定(比如都是https://www.google.com/),可以直接用REPLACE剥离域名:
      SELECT REPLACE('https://www.google.com/search?q=Stack+Overflow', 'https://www.google.com/', '') AS path_part;
      
      执行后得到:search?q=Stack+Overflow
    • 如果域名不固定,用LOCATE+SUBSTRING组合更通用(适配任意带https://前缀的URL):
      SELECT SUBSTRING('https://www.google.com/search?q=Stack+Overflow', LOCATE('/', 'https://www.google.com/search?q=Stack+Overflow', 9)+1) AS path_part;
      
      这里LOCATE(..., 9)是从https://之后的位置开始找第一个斜杠(域名末尾的斜杠),再用SUBSTRING截取后续内容。
  2. 对路径部分进行URL编码
    MySQL内置URL_ENCODE()函数可以直接完成URL编码,把两步合并:

    -- 固定域名场景
    SELECT URL_ENCODE(REPLACE('https://www.google.com/search?q=Stack+Overflow', 'https://www.google.com/', '')) AS encoded_path;
    
    -- 通用域名场景
    SELECT URL_ENCODE(
        SUBSTRING('https://www.google.com/search?q=Stack+Overflow', 
                  LOCATE('/', 'https://www.google.com/search?q=Stack+Overflow', 9)+1
        )
    ) AS encoded_path;
    

    执行后都会得到你期望的结果:search%3Fq%3DStack+Overflow

其他数据库适配

不同数据库的内置函数略有差异,给出对应写法:

  • PostgreSQL:
    SELECT encode(convert_to(
        SUBSTRING('https://www.google.com/search?q=Stack+Overflow', 
                  POSITION('//www.google.com/' IN 'https://www.google.com/search?q=Stack+Overflow') + LENGTH('//www.google.com/')
        ), 'UTF8'), 'url') AS encoded_path;
    
  • SQL Server(2016+):
    SELECT ENCODE_URL_COMPONENT(
        SUBSTRING('https://www.google.com/search?q=Stack+Overflow', 
                  CHARINDEX('//www.google.com/', 'https://www.google.com/search?q=Stack+Overflow') + LEN('//www.google.com/'), 
                  LEN('https://www.google.com/search?q=Stack+Overflow')
        )
    ) AS encoded_path;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 23:33:11