接受一个 UInt32 数字。将其解释为大端格式的 IPv4 地址。返回一个包含相应 IPv4 地址的字符串,格式为 ABCd(以点分隔的十进制数字)。
语法
IPv4NumToString(num)
参数
num
– 一个 UInt32 数字。返回值
示例
SELECT toIPv4('116.106.34.242') as ipv4, toTypeName(ipv4), IPv4NumToString(ipv4) as ipv4_string, toTypeName(ipv4_string)
┌─ipv4───────────┬─toTypeName(toIPv4('116.106.34.242'))─┬─ipv4_string────┬─toTypeName(IPv4NumToString(toIPv4('116.106.34.242')))─┐ │ 242.34.106.116 │ IPv4 │ 116.106.34.242 │ String │ └────────────────┴──────────────────────────────────────┴────────────────┴───────────────────────────────────────────────────────┘
与 类似IPv4NumToString
,但使用 xxx 而不是最后一个八位字节。
语法
IPv4NumToStringClassC(num)
参数
num
– 一个 UInt32 数字。返回值
示例
SELECT toIPv4('116.106.34.242') as ipv4, toTypeName(ipv4), IPv4NumToStringClassC(ipv4) as ipv4_string, toTypeName(ipv4_string)
┌─ipv4───────────┬─toTypeName(toIPv4('116.106.34.242'))─┬─ipv4_string────┬─toTypeName(IPv4NumToStringClassC(toIPv4('116.106.34.242')))─┐ │ 242.34.106.116 │ IPv4 │ 116.106.34.xxx │ String │ └────────────────┴──────────────────────────────────────┴────────────────┴─────────────────────────────────────────────────────────────┘
IPv4NumToString 的逆函数。如果 IPv4 地址格式无效,则返回 0。
语法
IPv4StringToNum(s)
参数
s
– 以字符串表示的 ipv4。返回值
示例
SELECT IPv4StringToNum('116.106.34.242') as ipv4, toTypeName(ipv4), IPv4NumToString(ipv4) as ipv4_string, toTypeName(ipv4_string)
┌─ipv4───────┬─toTypeName(IPv4StringToNum('116.106.34.242'))─┬─ipv4_string────┬─toTypeName(IPv4NumToString(IPv4StringToNum('116.106.34.242')))─┐ │ 1953112818 │ UInt32 │ 116.106.34.242 │ String │ └────────────┴───────────────────────────────────────────────┴────────────────┴────────────────────────────────────────────────────────────────┘
采用 UInt32 数字。将其解释为big endian的 IPv4 地址。返回包含二进制格式的 IPv6 地址的 FixedString(16)
值。
语法
IPv4ToIPv6(x)
参数
x
一个UInt32
号码返回值
示例
SELECT IPv4StringToNum('192.168.0.1') as ipv4, IPv6NumToString(IPv4ToIPv6(ipv4)) as ipv6_string
┌─ipv4───────┬─ipv6_string────────┐ │ 3232235521 │ ::ffff:192.168.0.1 │ └────────────┴────────────────────┘
接受包含二进制格式的 IPv6 地址的 FixedString(16) 值。返回包含此地址的文本格式的字符串。
IPv6 映射的 IPv4 地址以 ::ffff:111.222.33.44 格式输出。
语法
IPv6NumToString(x)
参数
x
– FixedString(16) 值包含二进制格式的 IPv6 地址返回值
示例
SELECT IPv6NumToString(toFixedString(unhex('2A0206B8000000000000000000000011'), 16)) AS addr;
┌─addr─────────┐ │ 2a02:6b8::11 │ └──────────────┘
的反向函数IPv6NumToString
。如果 IPv6 地址格式无效,则返回一个空字节字符串。
如果输入字符串包含有效的 IPv4 地址,则返回其 IPv6 等效值。HEX可以是大写或小写。
语法
IPv6StringToNum(string)
争论
string
— IP 地址。字符串。返回值
示例
SELECT addr, cutIPv6(IPv6StringToNum(addr), 0, 0) FROM (SELECT ['notaddress', '127.0.0.1', '1111::ffff'] AS addr) ARRAY JOIN addr;
┌─addr───────┬─cutIPv6(IPv6StringToNum(addr), 0, 0)─┐ │ notaddress │ :: │ │ 127.0.0.1 │ :: │ │ 1111::ffff │ 1111::ffff │ └────────────┴──────────────────────────────────────┘
接受包含二进制格式的 IPv6 地址的 FixedString(16) 值。返回以文本格式包含已删除指定字节数的地址的字符串。
语法
cutIPv6(x, bytesToCutForIPv6, bytesToCutForIPv4)
参数
x
– 包含二进制格式的 IPv6 地址的 FixedString(16) 值bytesToCutForIPv6
为 IPv6 表示而剪切的字节数bytesToCutForIPv4
为 IPv4 表示而剪切的字节数返回值
AUint64
数据类型哈希值。
类型:UInt64
示例
WITH IPv6StringToNum('2001:0DB8:AC10:FE01:FEED:BABE:CAFE:F00D') AS ipv6, IPv4ToIPv6(IPv4StringToNum('192.168.0.1')) AS ipv4 SELECT cutIPv6(ipv6, 2, 0), cutIPv6(ipv4, 0, 2)
┌─cutIPv6(ipv6, 2, 0)─────────────────┬─cutIPv6(ipv4, 0, 2)─┐ │ 2001:db8:ac10:fe01:feed:babe:cafe:0 │ ::ffff:192.168.0.0 │ └─────────────────────────────────────┴─────────────────────┘
的别名IPv4StringToNum()
采用 IPv4 地址的字符串形式并返回 IPv4 类型的值,该值是二进制的,等于 返回的值IPv4StringToNum()
。
语法
toIPv4(string)
争论
string
— IP 地址。字符串。返回值
示例
WITH'171.225.130.45' as IPv4_string SELECT toTypeName(IPv4StringToNum(IPv4_string)), toTypeName(toIPv4(IPv4_string))
┌─toTypeName(IPv4StringToNum(IPv4_string))─┬─toTypeName(toIPv4(IPv4_string))─┐ │ UInt32 │ IPv4 │ └──────────────────────────────────────────┴─────────────────────────────────┘
WITH'171.225.130.45' as IPv4_string SELECT hex(IPv4StringToNum(IPv4_string)), hex(toIPv4(IPv4_string))
┌─hex(IPv4StringToNum(IPv4_string))─┬─hex(toIPv4(IPv4_string))─┐ │ ABE1822D │ ABE1822D │ └───────────────────────────────────┴──────────────────────────┘
将字符串形式的 IPv6 地址转换为 IPv6 类型。如果 IPv6 地址格式无效,则返回空值。
类似于 IPv6StringToNum 函数,将 IPv6 地址转换为二进制格式。
语法
toIPv6(string)
争论
string
— IP 地址。字符串返回值
示例
WITH '2001:438:ffff::407d:1bc1' AS IPv6_string SELECT hex(IPv6StringToNum(IPv6_string)), hex(toIPv6(IPv6_string));
┌─hex(IPv6StringToNum(IPv6_string))─┬─hex(toIPv6(IPv6_string))─────────┐ │ 20010438FFFF000000000000407D1BC1 │ 20010438FFFF000000000000407D1BC1 │ └───────────────────────────────────┴──────────────────────────────────┘
返回包含 URL 的数组,在路径和查询字符串的末尾被符号 /,? 截断。连续的分隔符算作一个。截断在所有连续分隔符之后的位置进行。
语法
URLHierarchy(URL)
参数
URL
— URL。类型:字符串。返回值
示例
SELECT URLHierarchy('https://example.com/browse/CONV-6788');
┌─URLHierarchy('https://example.com/browse/CONV-6788')────────────────────────────────────────────┐ │ ['https://example.com/', 'https://example.com/browse/', 'https://example.com/browse/CONV-6788'] │ └─────────────────────────────────────────────────────────────────────────────────────────────────┘
与上文相同,但结果中不包含protocol和host。不包含 / 元素(root)。
语法
URLPathHierarchy(URL)
参数
URL
— URL。类型:字符串。返回值
示例
SELECT URLPathHierarchy('https://example.com/browse/CONV-6788');
┌─URLPathHierarchy('https://example.com/browse/CONV-6788')─┐ │ ['/browse/', '/browse/CONV-6788'] │ └──────────────────────────────────────────────────────────┘
删除片段标识符。数字符号也被删除。
语法
cutFragment(URL)
参数
URL
– url 字符串返回值
示例
SELECT cutFragment('http://example.com#fragment')
┌─cutFragment('http://example.com#fragment')─┐ │ http://example.com │ └────────────────────────────────────────────┘
删除查询字符串。问号也被删除。
语法
cutQueryString(URL)
参数
URL
– url 字符串返回值
示例
SELECT cutQueryString('http://example.com/?page=1&lr=213')
┌─cutQueryString('http://example.com/?page=1&lr=213')─┐ │ http://example.com/ │ └─────────────────────────────────────────────────────┘
删除查询字符串和片段标识符。问号和数字符号也被删除。
语法
cutQueryStringAndFragment(URL)
参数
URL
– url 字符串返回值
示例
SELECT cutQueryStringAndFragment('http://example.com/?page=1&lr=213#fragment')
┌─cutQueryStringAndFragment('http://example.com/?page=1&lr=213#fragment')─┐ │ http://example.com/ │ └─────────────────────────────────────────────────────────────────────────┘
返回包含顶级子域名直至“第一个重要子域名”的域名部分。
语法
cutToFirstSignificantSubdomain(URL)
参数
URL
– url 字符串返回值
示例
SELECT cutToFirstSignificantSubdomain('https://www.example.com.cn/')
┌─cutToFirstSignificantSubdomain('https://www.example.com.cn/')─┐ │ example.com.cn │ └───────────────────────────────────────────────────────────────┘
删除“name”URL 参数(如果存在)。此函数的工作原理是假设 URL 中的参数名称的编码方式与传递的参数中的编码方式完全相同。
语法
cutURLParameter(URL, name)
参数
URL
– url 字符串name
参数名称返回值
示例
SELECT cutURLParameter('http://example.com/?page=1&lr=213','page')
┌─cutURLParameter('http://example.com/?page=1&lr=213', 'page')─┐ │ http://example.com/?lr=213 │ └──────────────────────────────────────────────────────────────┘
如果存在,则从 URL 域名的开头删除最多一个“www.”
语法
cutWWW(URL)
参数
URL
– url 字符串name
参数名称返回值
示例
SELECT cutWWW('http://www.example.com/?page=1&lr=213')
┌─cutWWW('http://www.example.com/?page=1&lr=213')─┐ │ http://example.com/?page=1&lr=213 │ └─────────────────────────────────────────────────┘
返回解码后的 URL。
语法
decodeURLComponent(URL)
参数
URL
– url 字符串返回值
示例
SELECT decodeURLComponent('http://127.0.0.1:8123/?query=SELECT%201%3B') AS DecodedURL;
┌─DecodedURL─────────────────────────────┐ │ http://127.0.0.1:8123/?query=SELECT 1; │ └────────────────────────────────────────┘
从 URL 中提取主机名。
语法
domain(url)
参数
url
— URL。类型:字符串。URL可以指定或不指定方案。示例:
svn+ssh://some.svn-hosting.com:80/repo/trunk some.svn-hosting.com:80/repo/trunk https://yandex.com/time/
对于这些示例,该domain
函数返回以下结果:
some.svn-hosting.com some.svn-hosting.com yandex.com
返回值
类型:String
。
示例
SELECT domain('svn+ssh://some.svn-hosting.com:80/repo/trunk');
┌─domain('svn+ssh://some.svn-hosting.com:80/repo/trunk')─┐ │ some.svn-hosting.com │ └────────────────────────────────────────────────────────┘
返回域名并从其开头删除最多一个“www.” (如果存在)。
语法
domainWithoutWWW(url)
参数
url
— URL。类型:字符串。返回值
类型:String
。
示例
SELECT domainWithoutWWW('http://www.example.com#fragment');
┌─domainWithoutWWW('http://www.example.com#fragment')─┐ │ example.com │ └─────────────────────────────────────────────────────┘
返回 URL 中“name”参数的值(如果存在)。否则返回空字符串。如果有许多同名参数,则返回第一个。此函数的工作原理是假设 URL 中的参数名称编码方式与传递的参数中的编码方式完全相同。
语法
extractURLParameter(URL, name)
参数
URL
– url 字符串name
参数名称返回值
示例
SELECT extractURLParameter('http://example.com/?page=1&lr=213','page')
┌─extractURLParameter('http://example.com/?page=1&lr=213', 'page')─┐ │ 1 │ └──────────────────────────────────────────────────────────────────┘
返回与 URL 参数名称对应的名称字符串数组。值不会以任何方式解码。
语法
extractURLParameterNames(URL)
参数
URL
– url 字符串返回值
示例
SELECT extractURLParameterNames('http://example.com/?page=1&lr=213')
┌─extractURLParameterNames('http://example.com/?page=1&lr=213')─┐ │ ['page', 'lr'] │ └───────────────────────────────────────────────────────────────┘
返回与 URL 参数对应的 name=value 字符串数组。这些值不会以任何方式解码。
语法
extractURLParameters(URL)
参数
URL
– url 字符串返回值
示例
SELECT extractURLParameters('http://example.com/?page=1&lr=213')
┌─extractURLParameters('http://example.com/?page=1&lr=213')─┐ │ ['page=1', 'lr=213'] │ └───────────────────────────────────────────────────────────┘
返回“第一个重要子域名”。这是 Yandex.Metrica 特有的非标准概念。如果第一个重要子域名是“com”、“net”、“org”或“co”,则它是二级域名。否则,它是三级域名。
语法
firstSignificantSubdomain(URL)
参数
URL
– url 字符串返回值
示例
SELECT firstSignificantSubdomain('https://www.example.com.cn/')
┌─firstSignificantSubdomain('https://www.example.com.cn/')─┐ │ example │ └──────────────────────────────────────────────────────────┘
返回片段标识符。片段不包括初始井号。
语法
fragment(URL)
参数
URL
– url 字符串返回值
示例
SELECT fragment('http://example.com#fragment')
┌─fragment('http://example.com#fragment')─┐ │ fragment │ └─────────────────────────────────────────┘
返回路径。示例:/top/news.html
路径不包含查询字符串。
语法
path(URL)
参数
URL
– url 字符串返回值
示例
SELECT path('http://example.com/top/news.html')
┌─path('http://example.com/top/news.html')─┐ │ /top/news.html │ └──────────────────────────────────────────┘
从 URL 中提取协议。
典型返回值示例:http、https、ftp、mailto、tel、magnet…
语法
protocol(URL)
参数
URL
– url 字符串返回值
示例
SELECT protocol('http://example.com')
┌─protocol('http://example.com')─┐ │ http │ └────────────────────────────────┘
返回查询字符串。示例:page=1&lr=213。查询字符串不包括初始问号、# 以及 # 之后的所有内容。
语法
queryString(URL)
参数
URL
– url 字符串返回值
示例
SELECT queryString('http://example.com/?page=1&lr=213')
┌─queryString('http://example.com/?page=1&lr=213')─┐ │ page=1&lr=213 │ └──────────────────────────────────────────────────┘
返回查询字符串和片段标识符。示例:page=1#29390。
语法
queryStringAndFragment(URL)
参数
URL
– url 字符串返回值
示例
SELECT queryStringAndFragment('http://example.com/?page=1&lr=213#fragment')
┌─queryStringAndFragment('http://example.com/?page=1&lr=213#fragment')─┐ │ page=1&lr=213#fragment │ └──────────────────────────────────────────────────────────────────────┘
从 URL 中提取顶级域名。
语法
topLevelDomain(url)
参数
url
— URL。类型:字符串。URL可以指定或不指定方案。示例:
svn+ssh://some.svn-hosting.com:80/repo/trunk some.svn-hosting.com:80/repo/trunk https://yandex.com/time/
返回值
类型:String
。
示例
SELECT topLevelDomain('svn+ssh://www.some.svn-hosting.com:80/repo/trunk');
┌─topLevelDomain('svn+ssh://www.some.svn-hosting.com:80/repo/trunk')─┐ │ com │ └────────────────────────────────────────────────────────────────────┘