As funções mencionadas nesta seção são otimizadas para máximo desempenho e, em sua maior parte, não seguem o padrão RFC-3986.
As funções que implementam a RFC-3986 têm RFC acrescentado ao nome da função e, em geral, são mais lentas.
Em geral, você pode usar as variantes de função sem RFC ao trabalhar com domínios registrados publicamente que não contenham informações de usuário nem símbolos @.
A tabela abaixo detalha quais símbolos em uma URL podem (✔) ou não podem (✗) ser interpretados pelas respectivas variantes com RFC e sem RFC:
| Símbolo | non-RFC | RFC | |
|---|
| ’ ’ | ✗ | ✗ | |
| \t | ✗ | ✗ | |
| < | ✗ | ✗ | |
| > | ✗ | ✗ | |
| % | ✗ | ✔* | |
| { | ✗ | ✗ | |
| } | ✗ | ✗ | |
| | ✗ | ✗ |
| \ | ✗ | ✗ | |
| ^ | ✗ | ✗ | |
| ~ | ✗ | ✔* | |
| [ | ✗ | ✗ | |
| ] | ✗ | ✔ | |
| ; | ✗ | ✔* | |
| = | ✗ | ✔* | |
| & | ✗ | ✔* | |
os símbolos marcados com * são subdelimitadores na RFC 3986 e permitidos para informações do usuário após o símbolo @.
Há dois tipos de funções de URL:
- Funções que extraem partes de uma URL. Se a parte relevante não estiver presente em uma URL, uma string vazia será retornada.
- Funções que removem parte de uma URL. Se a URL não tiver nada equivalente, ela permanecerá inalterada.
As funções abaixo são geradas a partir da tabela de sistema system.functions.
Introduzido em: v1.1.0
Retorna um array contendo a URL, truncada no final pelos símbolos /, ? e # no caminho e na string de consulta. Caracteres separadores consecutivos são considerados como um só. O resultado inclui o protocolo e o host como primeiro elemento, com caminhos progressivamente mais longos formando uma hierarquia.
Sintaxe
Argumentos
url — A URL a ser processada. String
Valor retornado
Retorna um array de URLs progressivamente mais longas, que formam uma hierarquia. Array(String)
Exemplos
Uso básico
SELECT URLHierarchy('https://example.com/a/b?c=1')
['https://example.com/','https://example.com/a/','https://example.com/a/b','https://example.com/a/b?c=1']
Introduzido em: v1.1.0
Retorna um array que contém o componente path da URL, truncado no final pelos símbolos /, ? e #. Diferentemente de URLHierarchy, o resultado não inclui o protocolo nem o host — ele começa no path. Caracteres separadores consecutivos são considerados como um só.
Sintaxe
Argumentos
url — A URL a ser processada. String
Valor retornado
Retorna um array de componentes do caminho da URL progressivamente mais longos, formando uma hierarquia. Array(String)
Exemplos
Uso básico
SELECT URLPathHierarchy('https://example.com/a/b?c=1')
['/a/','/a/b','/a/b?c=1']
Introduzido em: v1.1.0
Remove o identificador de fragmento, incluindo o caractere #, de uma URL.
Sintaxe
Argumentos
Valor retornado
Retorna a URL sem o identificador de fragmento. String
Exemplos
Exemplo de uso
SELECT cutFragment('http://example.com/path?query=value#fragment123');
┌─cutFragment('http://example.com/path?query=value#fragment123')─┐
│ http://example.com/path?query=value │
└────────────────────────────────────────────────────────────────┘
Introduzido em: v1.1.0
Remove a string de consulta, incluindo o ponto de interrogação, de uma URL.
Sintaxe
Argumentos
Valor retornado
Retorna a URL sem a string de consulta. String
Exemplos
Exemplo de uso
SELECT cutQueryString('http://example.com/path?query=value¶m=123#fragment');
┌─cutQueryString('http://example.com/path?query=value¶m=123#fragment')─┐
│ http://example.com/path#fragment │
└──────────────────────────────────────────────────────────────────────────┘
cutQueryStringAndFragment
Introduzido em: v1.1.0
Remove a string de consulta e o identificador de fragmento de uma URL, incluindo o ponto de interrogação e o sinal de cerquilha (#).
Sintaxe
cutQueryStringAndFragment(url)
Argumentos
Valor retornado
Retorna a URL sem a string de consulta e o identificador de fragmento. String
Exemplos
Exemplo de uso
SELECT cutQueryStringAndFragment('http://example.com/path?query=value¶m=123#fragment');
┌─cutQueryStringAndFragment('http://example.com/path?query=value¶m=123#fragment')─┐
│ http://example.com/path │
└─────────────────────────────────────────────────────────────────────────────────────┘
cutToFirstSignificantSubdomain
Introduzido em: v1.1.0
Retorna a parte do domínio que abrange os subdomínios de nível superior até o primeiro subdomínio significativo.
Sintaxe
cutToFirstSignificantSubdomain(url)
Argumentos
url — URL ou string de domínio a ser processada. String
Valor retornado
Retorna a parte do domínio que inclui os subdomínios de nível superior até o primeiro subdomínio significativo, quando possível; caso contrário, retorna uma string vazia. String
Exemplos
Exemplo de uso
SELECT
cutToFirstSignificantSubdomain('https://news.clickhouse.com.tr/'),
cutToFirstSignificantSubdomain('www.tr'),
cutToFirstSignificantSubdomain('tr');
┌─cutToFirstSignificantSubdomain('https://news.clickhouse.com.tr/')─┬─cutToFirstSignificantSubdomain('www.tr')─┬─cutToFirstSignificantSubdomain('tr')─┐
│ clickhouse.com.tr │ tr │ │
└───────────────────────────────────────────────────────────────────┴──────────────────────────────────────────┴──────────────────────────────────────┘
cutToFirstSignificantSubdomainCustom
Introduzido em: v21.1.0
Retorna a parte do domínio que inclui os subdomínios de nível superior até o primeiro subdomínio significativo. Aceita o nome de uma lista de TLD personalizada. Esta função pode ser útil se você precisar de uma lista de TLD atualizada ou se tiver uma lista personalizada.
Exemplo de configuração
<!-- <top_level_domains_path>/var/lib/clickhouse/top_level_domains/</top_level_domains_path> -->
<top_level_domains_lists>
<!-- https://publicsuffix.org/list/public_suffix_list.dat -->
<public_suffix_list>public_suffix_list.dat</public_suffix_list>
<!-- NOTA: o caminho está sob top_level_domains_path -->
</top_level_domains_lists>
Sintaxe
cutToFirstSignificantSubdomainCustom(url, tld_list_name)
Argumentos
url — String de URL ou de domínio a ser processada. String
tld_list_name — Nome da lista personalizada de TLD configurada no ClickHouse. const String
Valor retornado
Retorna a parte do domínio que inclui os subdomínios de nível superior até o primeiro subdomínio significativo. String
Exemplos
Usando uma lista personalizada de TLD para domínios não padrão
SELECT cutToFirstSignificantSubdomainCustom('bar.foo.there-is-no-such-domain', 'public_suffix_list')
foo.there-is-no-such-domain
cutToFirstSignificantSubdomainCustomRFC
Introduzido em: v22.10.0
Retorna a parte do domínio que inclui os subdomínios de nível superior até o primeiro subdomínio significativo.
Aceita o nome de uma lista de TLDs personalizada.
Essa função pode ser útil se você precisar de uma lista de TLDs atualizada ou se tiver uma lista personalizada.
Semelhante a cutToFirstSignificantSubdomainCustom, mas em conformidade com a RFC 3986.
Exemplo de configuração
<!-- <top_level_domains_path>/var/lib/clickhouse/top_level_domains/</top_level_domains_path> -->
<top_level_domains_lists>
<!-- https://publicsuffix.org/list/public_suffix_list.dat -->
<public_suffix_list>public_suffix_list.dat</public_suffix_list>
<!-- NOTA: o caminho está sob top_level_domains_path -->
</top_level_domains_lists>
Sintaxe
cutToFirstSignificantSubdomainCustomRFC(url, tld_list_name)
Argumentos
url — String de URL ou de domínio a ser processada de acordo com a RFC 3986. - tld_list_name — Nome da lista personalizada de TLD configurada no ClickHouse.
Valor retornado
Retorna a parte do domínio que inclui os subdomínios de nível superior até o primeiro subdomínio significativo. String
Exemplos
Exemplo de uso
SELECT cutToFirstSignificantSubdomainCustomRFC('www.foo', 'public_suffix_list');
┌─cutToFirstSignificantSubdomainCustomRFC('www.foo', 'public_suffix_list')─────┐
│ www.foo │
└──────────────────────────────────────────────────────────────────────────────┘
cutToFirstSignificantSubdomainCustomWithWWW
Introduzido na versão: v21.1.0
Retorna a parte do domínio que inclui os subdomínios de nível superior até o primeiro subdomínio significativo, sem remover ‘www’. Aceita o nome de uma lista personalizada de TLDs. Pode ser útil se você precisar de uma lista de TLDs mais atualizada ou se tiver uma lista personalizada.
Exemplo de configuração
<!-- <top_level_domains_path>/var/lib/clickhouse/top_level_domains/</top_level_domains_path> -->
<top_level_domains_lists>
<!-- https://publicsuffix.org/list/public_suffix_list.dat -->
<public_suffix_list>public_suffix_list.dat</public_suffix_list>
<!-- NOTE: o path está dentro de top_level_domains_path -->
</top_level_domains_lists>
**Syntax**
```sql
cutToFirstSignificantSubdomainCustomWithWWW(url, tld_list_name)
Argumentos
url — URL ou string de domínio a ser processada. - tld_list_name — Nome da lista personalizada de TLD configurada no ClickHouse.
Valor retornado
Parte do domínio que inclui os subdomínios de nível superior até o primeiro subdomínio significativo, sem remover ‘www’. String
Exemplos
Exemplo de uso
SELECT cutToFirstSignificantSubdomainCustomWithWWW('www.foo', 'public_suffix_list');
┌─cutToFirstSignificantSubdomainCustomWithWWW('www.foo', 'public_suffix_list')─┐
│ www.foo │
└──────────────────────────────────────────────────────────────────────────────┘
cutToFirstSignificantSubdomainCustomWithWWWRFC
Introduzido em: v22.10.0
Retorna a parte do domínio que inclui os subdomínios de nível superior até o primeiro subdomínio significativo, sem remover www.
Aceita o nome de uma lista personalizada de TLDs.
Pode ser útil se você precisar de uma lista de TLDs atualizada ou se tiver uma lista personalizada.
Semelhante a cutToFirstSignificantSubdomainCustomWithWWW, mas está em conformidade com a RFC 3986.
Exemplo de configuração
{/* <top_level_domains_path>/var/lib/clickhouse/top_level_domains/</top_level_domains_path> */}
<top_level_domains_lists>
{/* https://publicsuffix.org/list/public_suffix_list.dat */}
<public_suffix_list>public_suffix_list.dat</public_suffix_list>
{/* NOTA: path está em top_level_domains_path */}
</top_level_domains_lists>
**Syntax**
```sql
cutToFirstSignificantSubdomainCustomWithWWWRFC(url, tld_list_name)
Argumentos
url — URL ou string de domínio a ser processado de acordo com a RFC 3986. - tld_list_name — Nome da lista de TLD personalizada configurada no ClickHouse.
Valor retornado
Retorna a parte do domínio que inclui os subdomínios de nível superior até o primeiro subdomínio significativo, sem remover www. String
Exemplos
Processamento RFC 3986 preservando www com lista de TLD personalizada
SELECT cutToFirstSignificantSubdomainCustomWithWWWRFC('https://www.subdomain.example.custom', 'public_suffix_list')
cutToFirstSignificantSubdomainRFC
Introduzido em: v22.10.0
Retorna a parte do domínio que inclui os subdomínios de nível superior até o “primeiro subdomínio significativo”. É semelhante a cutToFirstSignificantSubdomain, mas está em conformidade com a RFC 3986.
Sintaxe
cutToFirstSignificantSubdomainRFC(url)
Argumentos
url — URL ou string de domínio a ser processado de acordo com a RFC 3986. String
Valor retornado
Retorna a parte do domínio que inclui os subdomínios de nível superior até o primeiro subdomínio significativo, se possível; caso contrário, retorna uma string vazia. String
Exemplos
Exemplo de uso
SELECT
cutToFirstSignificantSubdomain('http://user:password@example.com:8080'),
cutToFirstSignificantSubdomainRFC('http://user:password@example.com:8080');
┌─cutToFirstSignificantSubdomain('http://user:password@example.com:8080')─┬─cutToFirstSignificantSubdomainRFC('http://user:password@example.com:8080')─┐
│ │ example.com │
└─────────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────┘
cutToFirstSignificantSubdomainWithWWW
Introduzido em: v20.12.0
Retorna a parte do domínio que inclui os subdomínios de nível superior até o “primeiro subdomínio significativo”, sem remover ‘www.’.
Semelhante a cutToFirstSignificantSubdomain, mas preserva o prefixo ‘www.’, se presente.
Sintaxe
cutToFirstSignificantSubdomainWithWWW(url)
Argumentos
url — URL ou string de domínio a ser processada. String
Valor retornado
Retorna a parte do domínio que inclui os subdomínios de nível superior até o primeiro subdomínio significativo (incluindo www), quando possível; caso contrário, retorna uma string vazia. String
Exemplos
Exemplo de uso
SELECT
cutToFirstSignificantSubdomainWithWWW('https://news.clickhouse.com.tr/'),
cutToFirstSignificantSubdomainWithWWW('www.tr'),
cutToFirstSignificantSubdomainWithWWW('tr');
┌─cutToFirstSignificantSubdomainWithWWW('https://news.clickhouse.com.tr/')─┬─cutToFirstSignificantSubdomainWithWWW('www.tr')─┬─cutToFirstSignificantSubdomainWithWWW('tr')─┐
│ clickhouse.com.tr │ www.tr │ │
└──────────────────────────────────────────────────────────────────────────┴─────────────────────────────────────────────────┴─────────────────────────────────────────────┘
cutToFirstSignificantSubdomainWithWWWRFC
Introduzido em: v22.10.0
Retorna a parte do domínio que inclui os subdomínios de nível superior até o “primeiro subdomínio significativo”, sem remover ‘www’. Semelhante a cutToFirstSignificantSubdomainWithWWW, mas em conformidade com a RFC 3986.
Sintaxe
cutToFirstSignificantSubdomainWithWWWRFC(url)
Argumentos
url — URL ou string de domínio a ser processado de acordo com a RFC 3986.
Valor retornado
Retorna a parte do domínio que inclui os subdomínios de nível superior até o primeiro subdomínio significativo (com ‘www’), se possível; caso contrário, retorna uma string vazia String
Exemplos
Exemplo de uso
SELECT
cutToFirstSignificantSubdomainWithWWW('http:%2F%2Fwwwww.nova@mail.ru/economicheskiy'),
cutToFirstSignificantSubdomainWithWWWRFC('http:%2F%2Fwwwww.nova@mail.ru/economicheskiy');
┌─cutToFirstSignificantSubdomainWithWWW('http:%2F%2Fwwwww.nova@mail.ru/economicheskiy')─┬─cutToFirstSignificantSubdomainWithWWWRFC('http:%2F%2Fwwwww.nova@mail.ru/economicheskiy')─┐
│ │ mail.ru │
└───────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────────┘
Introduzido em: v1.1.0
Remove o parâmetro name de uma URL, se ele estiver presente.
Esta função não codifica nem decodifica caracteres nos nomes dos parâmetros; por exemplo, Client ID e Client%20ID são tratados como nomes de parâmetros diferentes.
Sintaxe
cutURLParameter(url, name)
Argumentos
Valor retornado
URL com o parâmetro name removido. String
Exemplos
Exemplo de uso
SELECT
cutURLParameter('http://bigmir.net/?a=b&c=d&e=f#g', 'a') AS url_without_a,
cutURLParameter('http://bigmir.net/?a=b&c=d&e=f#g', ['c', 'e']) AS url_without_c_and_e;
┌─url_without_a────────────────┬─url_without_c_and_e──────┐
│ http://bigmir.net/?c=d&e=f#g │ http://bigmir.net/?a=b#g │
└──────────────────────────────┴──────────────────────────┘
Introduzido em: v1.1.0
Remove o prefixo www., se presente, do domínio da URL.
Sintaxe
Argumentos
Valor retornado
Retorna a URL com o prefixo www. removido do domínio. String
Exemplos
Exemplo de uso
SELECT cutWWW('http://www.example.com/path?query=value#fragment');
┌─cutWWW('http://www.example.com/path?query=value#fragment')─┐
│ http://example.com/path?query=value#fragment │
└────────────────────────────────────────────────────────────┘
Introduzido em: v1.1.0
Recebe como entrada uma string codificada em URL e a decodifica para sua forma original e legível.
Sintaxe
Argumentos
Valor retornado
Retorna a URL decodificada. String
Exemplos
Exemplo de uso
SELECT decodeURLComponent('http://127.0.0.1:8123/?query=SELECT%201%3B') AS DecodedURL;
┌─DecodedURL─────────────────────────────┐
│ http://127.0.0.1:8123/?query=SELECT 1; │
└────────────────────────────────────────┘
Introduzido em: v1.1.0
Decodifica strings codificadas em URL usando regras de codificação de formulários (RFC-1866), em que os sinais de + são convertidos em espaços e os caracteres codificados por percentual são decodificados.
Sintaxe
decodeURLFormComponent(url)
Argumentos
Valor retornado
Retorna a URL decodificada. String
Exemplos
Exemplo de uso
SELECT decodeURLFormComponent('http://127.0.0.1:8123/?query=SELECT%201+2%2B3') AS DecodedURL;
┌─DecodedURL────────────────────────────────┐
│ http://127.0.0.1:8123/?query=SELECT 1 2+3 │
└───────────────────────────────────────────┘
Introduzido em: v1.1.0
Extrai o nome do host de uma URL.
A URL pode ser especificada com ou sem protocolo.
Sintaxe
Argumentos
Valor retornado
Retorna o nome do host se a string de entrada puder ser interpretada como uma URL; caso contrário, retorna uma string vazia. String
Exemplos
Exemplo de uso
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 │
└────────────────────────────────────────────────────────┘
Introduzido em: v22.10.0
Extrai o hostname de uma URL.
Semelhante a domain, mas compatível com a RFC 3986.
Sintaxe
Argumentos
Valor retornado
Retorna o nome do host se a string de entrada puder ser interpretada como uma URL; caso contrário, retorna uma string vazia. String
Exemplos
Exemplo de uso
SELECT
domain('http://user:password@example.com:8080/path?query=value#fragment'),
domainRFC('http://user:password@example.com:8080/path?query=value#fragment');
┌─domain('http://user:password@example.com:8080/path?query=value#fragment')─┬─domainRFC('http://user:password@example.com:8080/path?query=value#fragment')─┐
│ │ example.com │
└───────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────┘
Introduzido em: v1.1.0
Retorna o domínio de uma URL sem o www. inicial, se houver.
Sintaxe
Argumentos
Valor retornado
Retorna o nome de domínio se a string de entrada puder ser interpretada como uma URL (sem www. no início); caso contrário, retorna uma string vazia. String
Exemplos
Exemplo de uso
SELECT domainWithoutWWW('http://paul@www.example.com:80/');
┌─domainWithoutWWW('http://paul@www.example.com:80/')─┐
│ example.com │
└─────────────────────────────────────────────────────┘
Introduzido em: v1.1.0
Retorna o domínio sem www. no início, se houver. Semelhante a domainWithoutWWW, mas em conformidade com a RFC 3986.
Sintaxe
Argumentos
Valor retornado
Retorna o nome de domínio se a string de entrada puder ser interpretada como uma URL (sem www. no início); caso contrário, retorna uma string vazia. String
Exemplos
Exemplo de uso
SELECT
domainWithoutWWW('http://user:password@www.example.com:8080/path?query=value#fragment'),
domainWithoutWWWRFC('http://user:password@www.example.com:8080/path?query=value#fragment');
┌─domainWithoutWWW('http://user:password@www.example.com:8080/path?query=value#fragment')─┬─domainWithoutWWWRFC('http://user:password@www.example.com:8080/path?query=value#fragment')─┐
│ │ example.com │
└─────────────────────────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────┘
Introduzido em: v22.3.0
Recebe uma string comum e a converte para o formato codificado para URL (percent-encoded), no qual caracteres especiais são substituídos por seus equivalentes codificados por porcentagem.
Sintaxe
Argumentos
Valor retornado
Retorna a URL codificada. String
Exemplos
Exemplo de uso
SELECT encodeURLComponent('http://127.0.0.1:8123/?query=SELECT 1;') AS EncodedURL;
┌─EncodedURL───────────────────────────────────────────────┐
│ http%3A%2F%2F127.0.0.1%3A8123%2F%3Fquery%3DSELECT%201%3B │
└──────────────────────────────────────────────────────────┘
Introduzido na versão: v22.3.0
Codifica strings usando regras de codificação de formulários (RFC-1866), em que os espaços são convertidos em sinais de + e os caracteres especiais são codificados por percentual.
Sintaxe
encodeURLFormComponent(url)
Argumentos
Valor retornado
Retorna a URL codificada. String
Exemplos
Exemplo de uso
SELECT encodeURLFormComponent('http://127.0.0.1:8123/?query=SELECT 1 2+3') AS EncodedURL;
┌─EncodedURL────────────────────────────────────────────────┐
│ http%3A%2F%2F127.0.0.1%3A8123%2F%3Fquery%3DSELECT+1+2%2B3 │
└───────────────────────────────────────────────────────────┘
Introduzido em: v1.1.0
Retorna o valor do parâmetro name na URL, se ele estiver presente; caso contrário, retorna uma string vazia.
Se houver vários parâmetros com esse nome, a primeira ocorrência será retornada.
A função pressupõe que o parâmetro no argumento url esteja codificado da mesma forma que no argumento name.
Sintaxe
extractURLParameter(url, name)
Argumentos
Valor retornado
Retorna o valor do parâmetro da URL com o nome especificado. String
Exemplos
Exemplo de uso
SELECT extractURLParameter('http://example.com/?param1=value1¶m2=value2', 'param1');
┌─extractURLPa⋯, 'param1')─┐
│ value1 │
└──────────────────────────┘
Introduzido em: v1.1.0
Retorna um array de strings com os nomes correspondentes aos parâmetros de URL.
Os valores não são decodificados.
Sintaxe
extractURLParameterNames(url)
Argumentos
Valor retornado
Retorna um array de strings com os nomes dos parâmetros de URL. Array(String)
Exemplos
Exemplo de uso
SELECT extractURLParameterNames('http://example.com/?param1=value1¶m2=value2');
┌─extractURLPa⋯m2=value2')─┐
│ ['param1','param2'] │
└──────────────────────────┘
Introduzido em: v1.1.0
Retorna um array de strings name=value correspondente aos parâmetros da URL.
Os valores não são decodificados.
Sintaxe
extractURLParameters(url)
Argumentos
Valor retornado
Retorna um array de strings name=value correspondentes aos parâmetros da URL. Array(String)
Exemplos
Exemplo de uso
SELECT extractURLParameters('http://example.com/?param1=value1¶m2=value2');
┌─extractURLParame⋯¶m2=value2')─┐
│ ['param1=value1','param2=value2'] │
└───────────────────────────────────┘
firstSignificantSubdomain
Introduzido em: v1.1.0
Retorna o “primeiro subdomínio significativo”.
O primeiro subdomínio significativo é um domínio de segundo nível se for ‘com’, ‘net’, ‘org’ ou ‘co’.
Caso contrário, é um domínio de terceiro nível.
Por exemplo, firstSignificantSubdomain(‘https://news.clickhouse.com/') = ‘clickhouse’, firstSignificantSubdomain (‘https://news.clickhouse.com.tr/') = ‘clickhouse’.
A lista de domínios de segundo nível “insignificantes” e outros detalhes de implementação poderão mudar no futuro.
Sintaxe
firstSignificantSubdomain(url)
Argumentos
Valor retornado
Exemplos
firstSignificantSubdomain
SELECT firstSignificantSubdomain('https://news.clickhouse.com/')
firstSignificantSubdomainCustom
Introduzido em: v21.1.0
Retorna o subdomínio significativo de uma URL usando uma lista personalizada de TLDs (Top-Level Domains). O nome dessa lista personalizada de TLDs se refere a uma configuração que define quais sufixos de domínio devem ser tratados como domínios de nível superior. Isso é útil para hierarquias de TLDs não padrão. A função usa um algoritmo simplificado de parsing de URL, que pressupõe que o protocolo e tudo o que vem depois já foram removidos.
Sintaxe
firstSignificantSubdomainCustom(url, tld_list_name)
Argumentos
url — A URL da qual o subdomínio será extraído. String
tld_list_name — Nome da lista de TLD personalizada da configuração. String
Valor retornado
Retorna o subdomínio significativo. String
Exemplos
Uso básico
SELECT firstSignificantSubdomainCustom('https://news.example.com', 'public_suffix_list')
firstSignificantSubdomainCustomRFC
Introduzido na versão: v22.10.0
Semelhante a firstSignificantSubdomainCustom, mas usa parsing de URL compatível com a RFC 3986 em vez do algoritmo simplificado.
Sintaxe
firstSignificantSubdomainCustomRFC(url, tld_list_name)
Argumentos
url — URL da qual o subdomínio será extraído. String
tld_list_name — Nome da lista de TLD personalizada da configuração. String
Valor retornado
Retorna o primeiro subdomínio significativo. String
Exemplos
Uso básico
SELECT firstSignificantSubdomainCustomRFC('https://news.example.com', 'public_suffix_list')
firstSignificantSubdomainRFC
Introduzido em: v22.10.0
Retorna o “primeiro subdomínio significativo” de acordo com a RFC 1034.
Sintaxe
firstSignificantSubdomainRFC(url)
Argumentos
Valor de retorno
Exemplos
Introduzido em: v1.1.0
Retorna o identificador do fragmento sem o símbolo hash inicial.
Sintaxe
Argumentos
Valor retornado
Retorna o identificador do fragmento sem o símbolo hash inicial. String
Exemplos
Exemplo de uso
SELECT fragment('https://clickhouse.com/docs/getting-started/quick-start/cloud#1-create-a-clickhouse-service');
┌─fragment('http⋯ouse-service')─┐
│ 1-create-a-clickhouse-service │
└───────────────────────────────┘
Introduzido em: v20.5.0
Extrai a parte de rede (username:password@host:port) de uma URL.
Sintaxe
Argumentos
Valor retornado
Retorna username:password@host:port a partir de uma determinada URL. String
Exemplos
Exemplo de uso
SELECT netloc('http://paul@www.example.com:80/');
┌─netloc('http⋯e.com:80/')─┐
│ paul@www.example.com:80 │
└──────────────────────────┘
Introduzido em: v1.1.0
Retorna o caminho de uma URL sem a query string.
Sintaxe
Argumentos
Valor retornado
Retorna o caminho da URL, sem a query string. String
Exemplos
Exemplo de uso
SELECT path('https://clickhouse.com/docs/sql-reference/functions/url-functions/?query=value');
┌─path('https://clickhouse.com/en/sql-reference/functions/url-functions/?query=value')─┐
│ /docs/sql-reference/functions/url-functions/ │
└──────────────────────────────────────────────────────────────────────────────────────┘
Introduzido em: v1.1.0
Igual a path, mas inclui a string de consulta e o fragmento da URL.
Sintaxe
Argumentos
Valor retornado
Retorna o caminho da URL, incluindo a query string e o fragmento. String
Exemplos
Exemplo de uso
SELECT pathFull('https://clickhouse.com/docs/sql-reference/functions/url-functions/?query=value#section');
┌─pathFull('https://clickhouse.com⋯unctions/?query=value#section')─┐
│ /docs/sql-reference/functions/url-functions/?query=value#section │
└──────────────────────────────────────────────────────────────────┘
Introduzido em: v20.5.0
Retorna a porta de uma URL ou default_port se a URL não contiver uma porta ou não puder ser analisada.
Sintaxe
port(url[, default_port])
Argumentos
url — URL. String
default_port — Opcional. O número da porta padrão a ser retornado. 0 por padrão. UInt16
Valor retornado
Retorna a porta da URL ou a porta padrão caso não haja porta na URL ou ocorra um erro de validação. UInt16
Exemplos
Exemplo de uso
SELECT port('https://clickhouse.com:8443/docs'), port('https://clickhouse.com/docs', 443);
┌─port('https://clickhouse.com:8443/docs')─┬─port('https://clickhouse.com/docs', 443)─┐
│ 8443 │ 443 │
└──────────────────────────────────────────┴──────────────────────────────────────────┘
Introduzido em: v22.10.0
Retorna a porta ou default_port se a URL não contiver uma porta ou não puder ser analisada.
Semelhante a port, mas em conformidade com a RFC 3986.
Sintaxe
portRFC(url[, default_port])
Argumentos
url — URL. String
default_port — Opcional. Número da porta padrão a ser retornado. 0 por padrão. UInt16
Valor retornado
Retorna a porta ou a porta padrão se não houver uma porta na URL ou em caso de erro de validação. UInt16
Exemplos
Exemplo de uso
SELECT port('http://user:password@example.com:8080/'), portRFC('http://user:password@example.com:8080/');
┌─port('http:/⋯com:8080/')─┬─portRFC('htt⋯com:8080/')─┐
│ 0 │ 8080 │
└──────────────────────────┴──────────────────────────┘
Introduzido em: v1.1.0
Extrai o protocolo de uma URL.
Exemplos de valores retornados comuns: http, https, ftp, mailto, tel, magnet.
Sintaxe
Argumentos
Valor retornado
Retorna o protocolo da URL ou uma string vazia, caso não seja possível determiná-lo. String
Exemplos
Exemplo de uso
SELECT protocol('https://clickhouse.com/');
┌─protocol('https://clickhouse.com/')─┐
│ https │
└─────────────────────────────────────┘
Introduzido em: v1.1.0
Retorna a query string de uma URL, sem o ponto de interrogação inicial, o # nem nada após o #.
Sintaxe
Argumentos
Valor retornado
Retorna a query string da URL sem o ponto de interrogação inicial e o fragmento. String
Exemplos
Exemplo de uso
SELECT queryString('https://clickhouse.com/docs?query=value¶m=123#section');
┌─queryString(⋯3#section')─┐
│ query=value¶m=123 │
└──────────────────────────┘
Introduzido em: v1.1.0
Retorna a query string e o identificador de fragmento de uma URL.
Sintaxe
queryStringAndFragment(url)
Argumentos
Valor retornado
Retorna a query string e o identificador de fragmento da URL. String
Exemplos
Exemplo de uso
SELECT queryStringAndFragment('https://clickhouse.com/docs?query=value¶m=123#section');
┌─queryStringAnd⋯=123#section')─┐
│ query=value¶m=123#section │
└───────────────────────────────┘
Introduzido em: v1.1.0
Extrai o domínio de nível superior de uma URL.
A URL pode ser especificada com ou sem protocolo.
Por exemplo:svn+ssh://some.svn-hosting.com:80/repo/trunk
some.svn-hosting.com:80/repo/trunk
https://clickhouse.com/time/
Sintaxe
Argumentos
Valor retornado
Retorna o nome de domínio se a string de entrada puder ser interpretada como uma URL. Caso contrário, retorna uma string vazia. String
Exemplos
Exemplo de uso
SELECT topLevelDomain('svn+ssh://www.some.svn-hosting.com:80/repo/trunk');
┌─topLevelDomain('svn+ssh://www.some.svn-hosting.com:80/repo/trunk')─┐
│ com │
└────────────────────────────────────────────────────────────────────┘
topLevelDomainRFC
Introduzido em: v22.10.0
Extrai o domínio de nível superior de uma URL.
Semelhante a topLevelDomain, mas em conformidade com a RFC 3986.
Sintaxe
Argumentos
Valor retornado
Nome de domínio, se a string de entrada puder ser interpretada como uma URL. Caso contrário, uma string vazia. String
Exemplos
Exemplo de uso
SELECT topLevelDomain('http://foo:foo%41bar@foo.com'), topLevelDomainRFC('http://foo:foo%41bar@foo.com');
┌─topLevelDomain('http://foo:foo%41bar@foo.com')─┬─topLevelDomainRFC('http://foo:foo%41bar@foo.com')─┐
│ │ com │
└────────────────────────────────────────────────┴───────────────────────────────────────────────────┘