URL函数

更新时间:

本文介绍URL函数的基本语法和示例。

PARSE_URL

PARSE_URL(url, part [,key] )
  • 命令说明:返回urlpart所指定的内容。

    规则如下:

    • part取值为QUERY时,返回key所对应value的值。

    • urlpartkey值为NULL时,返回NULL。

    • part取值不符合要求时,返回NULL。

    part取值不区分大写,取值如下:

    • HOST:URL的主机名或IP地址。

    • PATH:URL的路径。例如 /path/to/resource

    • QUERY:URL的查询字符串,即以?开头的内容。

    • REF:URL的片段标识符,即以 # 开头的内容。

    • PROTOCOL:URL的协议。例如 httphttps

    • AUTHORITY:URL的用户信息、主机名及端口。

    • FILE:URL的文件路径。

    • USERINFO:URL的用户信息,包括用户名和密码。

  • 输入值类型:urlpartkey均为STRING类型。

  • 返回值类型:STRING。

  • 示例:

    • 返回url中的主机名或IP地址。语句如下:

      SELECT parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'HOST');

      返回结果如下:

      example.com
    • 返回url中的路径。语句如下:

      SELECT parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'PATH');

      返回结果如下:

      /over/there/index.dtb
    • 返回url中的查询字符串。语句如下:

      SELECT parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'QUERY', 'type');

      返回结果如下:

      animal
    • 返回url中的片段标识符。语句如下:

      SELECT parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'REF');

      返回结果如下:

      nose
    • 返回url的协议。语句如下:

      SELECT parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'PROTOCOL');

      返回结果如下:

      file
    • 返回url的用户信息、主机名及端口。语句如下:

      SELECT parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'AUTHORITY');

      返回结果如下:

      username:password@example.com:8042
    • 返回url的用户信息。语句如下:

      SELECT parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'USERINFO');

      返回结果如下:

      username:password

URL_DECODE

URL_DECODE(input)
  • 命令说明:解码application/x-www-form-urlencoded编码的字符串并返回结果。

    规则说明:当input值为NULL时,返回NULL。

    编码规则如下:

    • a~z、A~Z、0-9字符保持不变。

    • 英文句号(.)、短划线(-)、星号(*)和下划线(_)保持不变。

    • 加号(+)转换为空格。

    • %xy的序列转为对应的字节值,连续的字节值根据UTF-8格式解码为对应的字符串。

  • 输入值类型:STRING。

  • 返回值类型:STRING。

  • 示例:

    解码application/x-www-form-urlencoded编码的参数并返回结果,语句如下:

    SELECT url_decode('%E7%A4%BA%E4%BE%8Bfor+url_decode%3A%2F%2F+%28fdsf%29');

    返回结果如下:

    示例for url_decode:// (fdsf)

URL_ENCODE

URL_ENCODE(input)
  • 命令说明:返回字符串的application/x-www-form-urlencoded编码形式。

    规则说明:当inputNULL时,返回NULL。

    编码规则如下:

    • a~z、A~Z、0-9字符保持不变。

    • 英文句号(.)、短划线(-)、星号(*)和下划线(_)保持不变。

    • 空格转换为加号(+)。

    • 其他字符根据UTF-8格式编码转为字节值,然后将每个字节值表示为%xy的格式,xy是该字符的十六进制表示方式。

  • 输入值类型:STRING。

  • 返回值类型:STRING。

  • 示例:

    返回示例for url_encode:// (fdsf)application/x-www-form-urlencoded编码形式。

    SELECT url_encode('示例for url_encode:// (fdsf)');

    返回结果如下:

    %E7%A4%BA%E4%BE%8Bfor+url_encode%3A%2F%2F+%28fdsf%29

URL_EXTRACT_FRAGMENT

URL_EXTRACT_FRAGMENT(url)
  • 命令说明:返回url中的片段标识符(即以#开头的内容)。

    规则说明:

    • urlNULLurl无效时,返回NULL。

    • url中没有片段标识符时,返回空字符串。

  • 输入值类型:STRING。

  • 返回值类型:STRING。

  • 示例:

    返回url中的片段标识符。语句如下:

    SELECT url_extract_fragment('http://example.com/path1/p.php?k1=v1&k2=v2#Ref1');

    返回结果如下:

    Ref1

URL_EXTRACT_HOST

URL_EXTRACT_HOST(url)
  • 命令说明:返回url中的主机名或IP地址。

    规则说明:当urlNULLurl无效时,返回NULL。

  • 输入值类型:STRING。

  • 返回值类型:STRING。

  • 示例:

    返回url中的主机名或IP地址。语句如下:

    SELECT url_extract_host('http://example.com/path1/p.php?k1=v1&k2=v2#Ref1');

    返回结果如下:

    example.com

URL_EXTRACT_PARAMETER

URL_EXTRACT_PARAMETER(url, parameter)
  • 命令说明:返回url的查询部分中parameter参数指定的信息。

    规则说明:当urlNULL、parameterNULLurl的查询部分中没有parameter参数时,返回NULL。

  • 输入值类型:urlparameter均为STRING类型。

  • 返回值类型:STRING。

  • 示例:

    • 返回url中查询字符串中k1指定的信息。语句如下:

      SELECT url_extract_parameter('http://example.com/path1/p.php?k1=v1&k2=v2&k3&k4#Ref1', 'k1');

      返回结果如下:

      v1
    • 返回url中查询字符串中k5指定的信息。语句如下:

      SELECT url_extract_parameter('http://example.com/path1/p.php?k1=v1&k2=v2&k3&k4#Ref1', 'k5');

      返回结果如下:

      NULL

URL_EXTRACT_PATH

URL_EXTRACT_PATH(url)
  • 命令说明:返回url中的路径信息。

    规则说明:

    • urlNULLurl无效时,返回NULL。

    • url中没有路径时,返回空字符串。

  • 输入值类型:STRING。

  • 返回值类型:STRING。

  • 示例:

    返回url中的路径信息。语句如下:

    SELECT url_extract_path('http://example.com/path1/p.php?k1=v1&k2=v2#Ref1');

    返回结果如下:

    /path1/p.php

URL_EXTRACT_PORT

URL_EXTRACT_PORT(url)
  • 命令说明:返回url中的端口信息。

    规则说明:当urlNULL、url无效或url中没有端口时,返回NULL。

  • 输入值类型:STRING。

  • 返回值类型:STRING。

  • 示例:

    • 返回url中的端口信息。语句如下:

      SELECT url_extract_port('http://example.com/path1/p.php?k1=v1&k2=v2#Ref1');

      返回结果如下:

      NULL
    • 返回url中的端口信息。语句如下:

      SELECT url_extract_port('http://example.com:8080/path1/p.php?k1=v1&k2=v2#Ref1');

      返回结果如下:

      8080

URL_EXTRACT_PROTOCOL

URL_EXTRACT_PROTOCOL(url)
  • 命令说明:返回url中的协议信息。

    规则说明:当urlNULLurl无效时,返回NULL。

  • 输入值类型:STRING。

  • 返回值类型:STRING。

  • 示例:

    • 返回url中的协议信息。语句如下:

      SELECT url_extract_protocol('http://example.com/path1/p.php?k1=v1&k2=v2#Ref1');

      返回结果如下:

      http

URL_EXTRACT_QUERY

URL_EXTRACT_QUERY(url)
  • 命令说明:返回url中的查询部分信息。

    规则说明:

    • urlNULLurl无效,返回NULL。

    • url中没有查询部分的信息时,返回空字符串。

  • 输入值类型:STRING。

  • 返回值类型:STRING。

  • 示例:

    • 返回url中查询部分的信息。语句如下:

      SELECT url_extract_query('http://example.com/path1/p.php?k1=v1&k2=v2#Ref1');

      返回结果如下:

      k1=v1&k2=v2