Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

URL を操作するための関数

概要

通常、ユーザー文字列や @ 記号を含まない公開登録済みドメインを扱う場合は、RFC なしの関数バリアントを使用できます。 以下の表は、URL 内のどの記号を各 RFC および非 RFC バリアントで parse できるか () またはできないか () を示しています。

Symbol non-RFC RFC
' '
\t
<
>
% ✔*
{
}
\
^
~ ✔*
[
]
; ✔*
= ✔*
& ✔*

* が付いた記号は、RFC 3986 ではサブ区切り文字であり、@ 記号に続くユーザー情報で使用できます。

URL 関数には 2 種類あります。

  • URL の一部を抽出する関数。該当する部分が URL に存在しない場合は、空文字列が返されます。
  • URL の一部を削除する関数。URL に該当する部分がない場合、URL は変更されません。

URLHierarchy

導入バージョン: v1.1.0

URL を含む配列を返します。この配列では、パスおよびクエリ文字列内の /?# を区切りとして末尾側から切り詰められます。連続する区切り文字は 1 つとして扱われます。結果の最初の要素にはプロトコルとホストが含まれ、以降はより長いパスが階層的に並びます。

構文

URLHierarchy(url)

引数

  • url — 処理対象の URL。String

戻り値

階層を成す、段階的に長くなる URL の配列を返します。Array(String)

基本的な使い方

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']

URLPathHierarchy

導入バージョン: v1.1.0

URL のパス部分を含む配列を返します。この配列は、末尾を /?# の各記号で区切った形に切り詰められます。URLHierarchy とは異なり、結果にはプロトコルとホストは含まれず、パスから始まります。連続する区切り文字は 1 文字として扱われます。

構文

URLPathHierarchy(url)

引数

  • url — 処理対象の URL。 String

戻り値

階層構造を成す、URL パスの各部分を短いものから順に並べた配列を返します。 Array(String)

基本的な使い方

SELECT URLPathHierarchy('https://example.com/a/b?c=1')
['/a/','/a/b?','/a/b?c=1']

cutFragment

導入バージョン: v1.1.0

URL から、# を含むフラグメント識別子を削除します。

構文

cutFragment(url)

引数

戻り値

フラグメント識別子を削除した URL を返します。 String

使用例

SELECT cutFragment('http://example.com/path?query=value#fragment123');
┌─cutFragment('http://example.com/path?query=value#fragment123')─┐
│ http://example.com/path?query=value                            │
└────────────────────────────────────────────────────────────────┘

cutQueryString

導入バージョン: v1.1.0

URL から、先頭の疑問符も含めてクエリ文字列を削除します。

構文

cutQueryString(url)

引数

戻り値

クエリ文字列を除いた URL を返します。String

使用例

SELECT cutQueryString('http://example.com/path?query=value&param=123#fragment');
┌─cutQueryString('http://example.com/path?query=value&param=123#fragment')─┐
│ http://example.com/path#fragment                                         │
└──────────────────────────────────────────────────────────────────────────┘

cutQueryStringAndFragment

導入バージョン: v1.1.0

URLから、疑問符 (?) とシャープ記号 (#) を含むクエリ文字列およびフラグメント識別子を削除します。

構文

cutQueryStringAndFragment(url)

引数

戻り値

URL からクエリ文字列とフラグメント識別子を取り除いたものを返します。String

使用例

SELECT cutQueryStringAndFragment('http://example.com/path?query=value&param=123#fragment');
┌─cutQueryStringAndFragment('http://example.com/path?query=value&param=123#fragment')─┐
│ http://example.com/path                                                             │
└─────────────────────────────────────────────────────────────────────────────────────┘

cutToFirstSignificantSubdomain

導入バージョン: v1.1.0

ドメインのうち、最初の有意なサブドメインまでのトップレベルサブドメインを含む部分を返します。

構文

cutToFirstSignificantSubdomain(url)

引数

  • url — 処理対象の URL またはドメイン文字列。String

戻り値

可能な場合は、トップレベルサブドメインから最初の有意なサブドメインまでを含むドメイン部分を返し、それ以外の場合は空文字列を返します。String

使用例

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

導入バージョン: v21.1.0

最初の有意なサブドメインに至るまでのトップレベルサブドメインを含む、ドメインの部分を返します。カスタムのTLD リスト名を指定できます。最新の TLD リストが必要な場合や、独自のリストがある場合に便利です。

設定例

<!-- <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>
    <!-- 注意: パスは top_level_domains_path の下にあります -->
</top_level_domains_lists>

構文

cutToFirstSignificantSubdomainCustom(url, tld_list_name)

引数

  • url — 処理する URL またはドメイン文字列。 String
  • tld_list_name — ClickHouse で設定したカスタム TLD リストの名前。 const String

戻り値

上位のサブドメインから最初の有意なサブドメインまでを含む、ドメインの一部を返します。 String

非標準ドメインでカスタム TLD リストを使用する

SELECT cutToFirstSignificantSubdomainCustom('bar.foo.there-is-no-such-domain', 'public_suffix_list')
foo.there-is-no-such-domain

cutToFirstSignificantSubdomainCustomRFC

導入バージョン: v22.10.0

最初の有意なサブドメインまでのトップレベルサブドメインを含む、ドメインの部分を返します。 カスタムの TLD リスト 名を指定できます。 この関数は、最新の TLD リストが必要な場合や、独自のリストを使用している場合に便利です。 cutToFirstSignificantSubdomainCustom と似ていますが、RFC 3986 に準拠しています。

設定例

<!-- <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: path is under top_level_domains_path -->
</top_level_domains_lists>

構文

cutToFirstSignificantSubdomainCustomRFC(url, tld_list_name)

引数

  • url — RFC 3986 に従って処理される URL またはドメイン文字列。 - tld_list_name — ClickHouse で設定したカスタム TLD リストの名前。

戻り値

最初の有意なサブドメインまでのトップレベルサブドメインを含む、ドメインの部分を返します。String

使用例

SELECT cutToFirstSignificantSubdomainCustomRFC('www.foo', 'public_suffix_list');
┌─cutToFirstSignificantSubdomainCustomRFC('www.foo', 'public_suffix_list')─┐
│ foo                                                                      │
└──────────────────────────────────────────────────────────────────────────┘

cutToFirstSignificantSubdomainCustomWithWWW

導入バージョン: v21.1.0

www を削除せず、最初の有意なサブドメインまでのトップレベルサブドメインを含むドメイン部分を返します。カスタム TLD リスト名を受け取ります。最新の TLD リストが必要な場合や、カスタム リストを使用している場合に便利です。

設定例

<!-- <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>
    <!-- 注: パスは top_level_domains_path の配下です -->
</top_level_domains_lists>
    

**Syntax**

```sql
cutToFirstSignificantSubdomainCustomWithWWW(url, tld_list_name)

引数

  • url — 処理対象の URL またはドメイン文字列。 - tld_list_name — ClickHouse で設定したカスタム TLD リストの名前。

戻り値

www を削除せず、最初の意味のあるサブドメインまでのトップレベルサブドメインを含むドメインの一部。String

使用例

SELECT cutToFirstSignificantSubdomainCustomWithWWW('www.foo', 'public_suffix_list');
┌─cutToFirstSignificantSubdomainCustomWithWWW('www.foo', 'public_suffix_list')─┐
│ www.foo                                                                      │
└──────────────────────────────────────────────────────────────────────────────┘

cutToFirstSignificantSubdomainCustomWithWWWRFC

導入バージョン: v22.10.0

www を削除せずに、最初の有意なサブドメインまでのトップレベルサブドメインを含むドメイン部分を返します。 カスタム TLD リスト名を受け取ります。 新しい TLD リストが必要な場合や、カスタム リストがある場合に役立ちます。 cutToFirstSignificantSubdomainCustomWithWWW と似ていますが、RFC 3986 に準拠しています。

設定例

{/* <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: path is under top_level_domains_path */}
</top_level_domains_lists>
    

**Syntax**

```sql
cutToFirstSignificantSubdomainCustomWithWWWRFC(url, tld_list_name)

引数

  • url — RFC 3986 に従って処理する URL またはドメイン文字列。 - tld_list_name — ClickHouse で設定したカスタム TLD リストの名前。

戻り値

www を削除せず、トップレベルサブドメインから最初の有意なサブドメインまでを含むドメイン部分を返します。String

カスタム TLD リストを使用して www を保持した RFC 3986 パース

SELECT cutToFirstSignificantSubdomainCustomWithWWWRFC('https://www.subdomain.example.custom', 'public_suffix_list')
example.custom

cutToFirstSignificantSubdomainRFC

導入バージョン: v22.10.0

トップレベルサブドメインから"最初の有意なサブドメイン"までを含むドメイン部分を返します。cutToFirstSignificantSubdomain と似ていますが、RFC 3986 に準拠しています。

構文

cutToFirstSignificantSubdomainRFC(url)

引数

  • url — RFC 3986 に従って処理する URL またはドメイン文字列。String

戻り値

可能であれば、トップレベルサブドメインから最初の有意なサブドメインまでを含むドメイン部分を返します。そうでない場合は空文字列を返します。String

使用例

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

導入バージョン: v20.12.0

ドメインのうち、上位サブドメインから "最初の有意なサブドメイン" までを含む部分を返します。'www.' は削除しません。

cutToFirstSignificantSubdomain と似ていますが、存在する場合は 'www.' プレフィックスを保持します。

構文

cutToFirstSignificantSubdomainWithWWW(url)

引数

  • url — 処理対象の URL またはドメイン文字列。String

戻り値

可能であれば、最初の有意なサブドメインまでのトップレベルサブドメイン (www を含む) を含むドメイン部分を返します。該当しない場合は空文字列を返します。String

使用例

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

導入バージョン: v22.10.0

www を削除せず、トップレベルサブドメインから「最初の有意なサブドメイン」までを含むドメイン部分を返します。cutToFirstSignificantSubdomainWithWWW に似ていますが、RFC 3986 に準拠しています。

構文

cutToFirstSignificantSubdomainWithWWWRFC(url)

引数

  • url — RFC 3986 に従って処理する URL またはドメイン文字列。

戻り値

可能であれば、最初の有意なサブドメインまでを含むドメイン部分 (www を含むトップレベルサブドメインを含む) を返します。該当しない場合は、空文字列 String を返します。

使用例

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                                                                                  │
└───────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────────┘

cutURLParameter

導入バージョン: v1.1.0

URL から、指定された各パラメータについて最初に出現する name=value を削除します。 name= と表記されたパラメータのみが一致するため、値を持たないフラグパラメータはそのまま残ります。たとえば、cutURLParameter('http://bigmir.net/?a&c=d', 'a') は URL を変更せずに返します。 この関数は、パラメータ名の文字をエンコードまたはデコードしません。たとえば、Client IDClient%20ID は別のパラメータ名として扱われます。

構文

cutURLParameter(url, name)

引数

戻り値

リクエストされた各パラメータについて、最初に出現する name=value を削除した URL。 String

使用例

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 │
└──────────────────────────────┴───────────────────────────┘

cutWWW

導入バージョン: v1.1.0

URL のドメインの先頭に www. がある場合は、それを削除します。

構文

cutWWW(url)

引数

戻り値

ドメインから先頭の www. を除去した URL を返します。 String

使用例

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               │
└────────────────────────────────────────────────────────────┘

decodeURLComponent

導入バージョン: v1.1.0

URLエンコードされた文字列を入力として受け取り、元の可読な形式に戻します。

構文

decodeURLComponent(url)

引数

戻り値

デコードしたURLを返します。String

使用例

SELECT decodeURLComponent('http://127.0.0.1:8123/?query=SELECT%201%3B') AS DecodedURL;
┌─DecodedURL─────────────────────────────┐
│ http://127.0.0.1:8123/?query=SELECT 1; │
└────────────────────────────────────────┘

decodeURLFormComponent

導入バージョン: v1.1.0

フォームエンコーディングのルール (RFC-1866) に従って URL エンコードされた文字列をデコードします。このルールでは、+ 記号は空白に変換され、パーセントエンコードされた文字はデコードされます。

構文

decodeURLFormComponent(url)

引数

戻り値

デコードされたURLを返します。 String

使用例

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 │
└───────────────────────────────────────────┘

domain

導入バージョン: v1.1.0

URL からホスト名を抽出します。

URL は、プロトコルの有無にかかわらず指定できます。

構文

domain(url)

引数

戻り値

入力文字列をURLとして解析できる場合はホスト名を返し、できない場合は空文字列を返します。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                                   │
└────────────────────────────────────────────────────────┘

domainRFC

導入バージョン: v22.10.0

URL からホスト名を抽出します。 domain に似ていますが、RFC 3986 に準拠しています。

構文

domainRFC(url)

引数

戻り値

入力文字列を URL として解析できる場合はホスト名を返し、そうでない場合は空文字列を返します。String

使用例

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                                                                  │
└───────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────┘

domainWithoutWWW

導入バージョン: v1.1.0

URL の先頭に www. がある場合、それを除いたドメインを返します。

構文

domainWithoutWWW(url)

引数

戻り値

入力文字列をURLとして解釈できる場合はドメイン名 (先頭の www. を除く) を返し、そうでない場合は空文字列を返します。String

使用例

SELECT domainWithoutWWW('http://paul@www.example.com:80/');
┌─domainWithoutWWW('http://paul@www.example.com:80/')─┐
│ example.com                                         │
└─────────────────────────────────────────────────────┘

domainWithoutWWWRFC

導入バージョン: v1.1.0

先頭に www. が付いている場合は、それを除いたドメインを返します。domainWithoutWWW と似ていますが、RFC 3986 に準拠しています。

構文

domainWithoutWWWRFC(url)

引数

戻り値

入力文字列をURLとして解析できる場合はドメイン名 (先頭の www. を除く) を返し、そうでない場合は空文字列を返します。String

使用例

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                                                                                │
└─────────────────────────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────┘

encodeURLComponent

導入バージョン: v22.3.0

通常の文字列を受け取り、特殊文字を対応するパーセントエンコード表現に置き換えた URL エンコード (パーセントエンコード) 形式に変換します。

構文

encodeURLComponent(url)

引数

戻り値

エンコードされた URL を返します。String

使用例

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 │
└──────────────────────────────────────────────────────────┘

encodeURLFormComponent

導入バージョン: v22.3.0

フォームエンコードの規則 (RFC-1866) に従って文字列をエンコードします。このとき、スペースは + 記号に変換され、特殊文字はパーセントエンコードされます。

構文

encodeURLFormComponent(url)

引数

戻り値

エンコードされたURLを返します。 String

使用例

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 │
└───────────────────────────────────────────────────────────┘

extractURLParameter

導入バージョン: v1.1.0

URL に name パラメータが存在する場合はその値を返し、存在しない場合は空文字列を返します。 この名前のパラメータが複数ある場合は、最初に出現したものが返されます。 この関数は、url 引数内のパラメータが name 引数と同じ方法でエンコードされていることを前提としています。

構文

extractURLParameter(url, name)

引数

  • url — URL。String
  • name — パラメーター名。String

戻り値

指定した名前の URLパラメータの値を返します。String

使用例

SELECT extractURLParameter('http://example.com/?param1=value1&param2=value2', 'param1');
┌─extractURLParameter('http://example.com/?param1=value1&param2=value2', 'param1')─┐
│ value1                                                                           │
└──────────────────────────────────────────────────────────────────────────────────┘

extractURLParameterNames

導入バージョン: v1.1.0

URLパラメータ名に対応する文字列の配列を返します。 値はデコードされません。

構文

extractURLParameterNames(url)

引数

戻り値

URLパラメータの名前に対応する文字列の配列を返します。Array(String)

使用例

SELECT extractURLParameterNames('http://example.com/?param1=value1&param2=value2');
┌─extractURLParameterNames('http://example.com/?param1=value1&param2=value2')─┐
│ ['param1','param2']                                                         │
└─────────────────────────────────────────────────────────────────────────────┘

extractURLParameters

導入バージョン: v1.1.0

URLパラメータに対応する name=value 形式の文字列の配列を返します。 値はデコードされません。

構文

extractURLParameters(url)

引数

戻り値

URL パラメータに対応する name=value 形式の文字列の配列を返します。 Array(String)

使用例

SELECT extractURLParameters('http://example.com/?param1=value1&param2=value2');
┌─extractURLParameters('http://example.com/?param1=value1&param2=value2')─┐
│ ['param1=value1','param2=value2']                                       │
└─────────────────────────────────────────────────────────────────────────┘

firstSignificantSubdomain

導入バージョン: v1.1.0

"最初の有意なサブドメイン" を返します。

最初の有意なサブドメイン は、'com'、'net'、'org'、または 'co' の場合は第2レベルドメインです。 それ以外の場合は、第3レベルドメインです。

たとえば、firstSignificantSubdomain('https://news.clickhouse.com/&#39;) = 'clickhouse'、firstSignificantSubdomain ('https://news.clickhouse.com.tr/&#39;) = 'clickhouse' です。

"重要でない" 第2レベルドメインの一覧やその他の実装詳細は、将来変更される可能性があります。

構文

firstSignificantSubdomain(url)

引数

  • なし。

戻り値

firstSignificantSubdomain

SELECT firstSignificantSubdomain('https://news.clickhouse.com/')
┌─firstSignificantSubdomain('https://news.clickhouse.com/')─┐
│ clickhouse                                                │
└───────────────────────────────────────────────────────────┘

firstSignificantSubdomainCustom

導入バージョン: v21.1.0

カスタム TLD (トップレベルドメイン) リストを使用して、URL の最初の有意なサブドメインを返します。カスタム TLD リスト名は、どのドメイン接尾辞をトップレベルドメインとして扱うかを定義する設定を参照します。これは、非標準の TLD 階層で役立ちます。この関数は、プロトコルおよびそれ以降のすべてが取り除かれていることを前提とする、簡略化された URL パースアルゴリズムを使用します。

構文

firstSignificantSubdomainCustom(url, tld_list_name)

引数

  • url — サブドメインの抽出元となるURL。 String
  • tld_list_name — 設定内のカスタムTLDリストの名前。 String

戻り値

最初の有意なサブドメインを返します。 String

基本的な使い方

SELECT firstSignificantSubdomainCustom('https://news.example.com', 'public_suffix_list')
example

firstSignificantSubdomainCustomRFC

導入バージョン: v22.10.0

firstSignificantSubdomainCustom と似ていますが、簡略化されたアルゴリズムではなく、RFC 3986 に準拠した URL パースを使用します。

構文

firstSignificantSubdomainCustomRFC(url, tld_list_name)

引数

  • url — サブドメインを抽出する対象の URL。 String
  • tld_list_name — 設定内のカスタム TLD リストの名前。 String

戻り値

最初の有意なサブドメインを返します。 String

基本的な使い方

SELECT firstSignificantSubdomainCustomRFC('https://news.example.com', 'public_suffix_list')
example

firstSignificantSubdomainRFC

導入バージョン: v22.10.0

RFC 1034 に従って「最初の有意なサブドメイン」を返します。

構文

firstSignificantSubdomainRFC(url)

引数

  • なし。

戻り値

fragment

導入バージョン: v1.1.0

先頭のハッシュ記号を除いたフラグメント識別子を返します。

構文

fragment(url)

引数

戻り値

先頭のハッシュ記号を除いたフラグメント識別子を返します。String

使用例

SELECT fragment('https://clickhouse.com/docs/get-started/setup/cloud#1-create-a-clickhouse-service');
┌─fragment('https://clickhouse.com/docs/get-started/setup/cloud#1-create-a-clickhouse-service')─┐
│ 1-create-a-clickhouse-service                                                                 │
└───────────────────────────────────────────────────────────────────────────────────────────────┘

netloc

導入バージョン: v20.5.0

URL からネットワークロケーション (username:password@host:port) を抽出します。

構文

netloc(url)

引数

戻り値

指定したURLの username:password@host:port を返します。 String

使用例

SELECT netloc('http://paul@www.example.com:80/');
┌─netloc('http://paul@www.example.com:80/')─┐
│ paul@www.example.com:80                   │
└───────────────────────────────────────────┘

path

導入バージョン: v1.1.0

URLからクエリ文字列を除いたパスを返します。

構文

path(url)

引数

戻り値

クエリ文字列を含まないURLのパスを返します。String

使用例

SELECT path('https://clickhouse.com/docs/reference/functions/regular-functions/url-functions?query=value');
┌─path('https://clickhouse.com/docs/reference/functions/regular-functions/url-functions?query=value')─┐
│ /docs/reference/functions/regular-functions/url-functions                                           │
└─────────────────────────────────────────────────────────────────────────────────────────────────────┘

pathFull

導入バージョン: v1.1.0

path と同様ですが、URL のクエリ文字列とフラグメントも含みます。

構文

pathFull(url)

引数

戻り値

クエリ文字列とフラグメントを含む URL のパスを返します。String

使用例

SELECT pathFull('https://clickhouse.com/docs/reference/functions/regular-functions/url-functions?query=value#section');
┌─pathFull('https://clickhouse.com/docs/reference/functions/regular-functions/url-functions?query=value#section')─┐
│ /docs/reference/functions/regular-functions/url-functions?query=value#section                                   │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

port

導入バージョン: v20.5.0

URL のポートを返します。URL にポートが含まれていない場合、または解析できない場合は、default_port を返します。

構文

port(url[, default_port])

引数

  • url — URL。String
  • default_port — 任意。返されるデフォルトのポート番号です。デフォルトは 0 です。UInt16

戻り値

URL のポートを返します。URL にポートがない場合、またはバリデーションエラーが発生した場合は、デフォルトのポートを返します。UInt16

使用例

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 │
└──────────────────────────────────────────┴──────────────────────────────────────────┘

portRFC

導入バージョン: v22.10.0

URL にポートが含まれていない場合、または解析できない場合は、ポートまたは default_port を返します。 port と似ていますが、RFC 3986 に準拠しています。

構文

portRFC(url[, default_port])

引数

  • url — URL。String
  • default_port — 任意。返すデフォルトのポート番号です。既定値は 0 です。UInt16

戻り値

URL にポートが含まれない場合、または検証エラーが発生した場合は、ポート番号またはデフォルトのポート番号を返します。UInt16

使用例

SELECT port('http://user:password@example.com:8080/'), portRFC('http://user:password@example.com:8080/');
┌─port('http://user:password@example.com:8080/')─┬─portRFC('http://user:password@example.com:8080/')─┐
│                                              0 │                                              8080 │
└────────────────────────────────────────────────┴───────────────────────────────────────────────────┘

protocol

導入バージョン: v1.1.0

URLからプロトコルを抽出します。

代表的な戻り値の例: http、https、ftp、mailto、tel、magnet。

構文

protocol(url)

引数

戻り値

URL のプロトコルを返します。判定できない場合は空文字列を返します。 String

使用例

SELECT protocol('https://clickhouse.com/');
┌─protocol('https://clickhouse.com/')─┐
│ https                               │
└─────────────────────────────────────┘

queryString

導入バージョン: v1.1.0

URL のクエリ文字列から、先頭の疑問符、#、および # 以降のすべてを除いた文字列を返します。

構文

queryString(url)

引数

戻り値

先頭の疑問符とフラグメントを除いたURLのクエリ文字列を返します。String

使用例

SELECT queryString('https://clickhouse.com/docs?query=value&param=123#section');
┌─queryString('https://clickhouse.com/docs?query=value&param=123#section')─┐
│ query=value&param=123                                                    │
└──────────────────────────────────────────────────────────────────────────┘

queryStringAndFragment

導入バージョン: v1.1.0

URL のクエリ文字列とフラグメント識別子を返します。

構文

queryStringAndFragment(url)

引数

戻り値

URL のクエリ文字列とフラグメント識別子を返します。 String

使用例

SELECT queryStringAndFragment('https://clickhouse.com/docs?query=value&param=123#section');
┌─queryStringAndFragment('https://clickhouse.com/docs?query=value&param=123#section')─┐
│ query=value&param=123#section                                                       │
└─────────────────────────────────────────────────────────────────────────────────────┘

topLevelDomain

導入バージョン: v1.1.0

URL からトップレベルドメインを抽出します。

構文

topLevelDomain(url)

引数

戻り値

入力文字列をURLとして解析できる場合は、ドメイン名を返します。解析できない場合は空文字列を返します。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                                                                │
└────────────────────────────────────────────────────────────────────┘

topLevelDomainRFC

導入バージョン: v22.10.0

URL からトップレベルドメインを抽出します。 topLevelDomain と似ていますが、RFC 3986 に準拠しています。

構文

topLevelDomainRFC(url)

引数

戻り値

入力文字列を URL として解析できる場合はドメイン名、それ以外の場合は空文字列。String

使用例

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                                               │
└────────────────────────────────────────────────┴───────────────────────────────────────────────────┘
Navigation