注記
このセクションで説明する関数はパフォーマンスを最大化するよう最適化されており、多くの場合 RFC 3986 標準には準拠していません。
RFC 3986 を実装している関数には、関数名に RFC が付与されており、一般的に非 RFC 版よりも低速です。
ユーザー情報や @ 記号を含まない、公開登録されたドメインを扱う場合は、通常は非 RFC 版の関数を使用できます。
以下の表では、URL 内の記号のうち、対応する RFC 版および非 RFC 版の関数でパースできるもの(✔)とできないもの(✗)を示しています。
| Symbol | non-RFC | RFC | |
|---|
| ' ' | ✗ | ✗ | |
| \t | ✗ | ✗ | |
| < | ✗ | ✗ | |
| > | ✗ | ✗ | |
| % | ✗ | ✔* | |
| { | ✗ | ✗ | |
| } | ✗ | ✗ | |
| | ✗ | ✗ |
| \ | ✗ | ✗ | |
| ^ | ✗ | ✗ | |
| ~ | ✗ | ✔* | |
| [ | ✗ | ✗ | |
| ] | ✗ | ✔ | |
| ; | ✗ | ✔* | |
| = | ✗ | ✔* | |
| & | ✗ | ✔* | |
* が付いている記号は RFC 3986 におけるサブデリミタであり、@ 記号の後に続くユーザー情報として使用可能です。
URL 関数には次の 2 種類があります。
- URL の一部を抽出する関数。対象部分が URL に存在しない場合は空文字列を返します。
- URL の一部を削除する関数。URL に該当する部分が存在しない場合、その URL は変更されません。
注記
以下の関数は system.functions システムテーブルから生成されています。
URLHierarchy
導入バージョン: v1.1
パスおよびクエリ文字列内で、末尾を区切り記号 /、?、# の位置までで切り詰めた URL を要素とする配列を返します。連続する区切り記号は 1 つの区切りとして扱われます。結果では、最初の要素はプロトコルとホストのみで構成され、その後の要素はパスが徐々に長くなっていくことで階層を形成します。
構文
引数
返り値
階層を構成する、段階的に長くなる 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
URL のパスコンポーネント部分を含む配列を返し、その末尾は文字 /、?、# のいずれかで打ち切られます。URLHierarchy と異なり、結果にはプロトコルとホストは含まれず、パスから始まります。連続した区切り文字は 1 文字として扱われます。
構文
引数
戻り値
階層構造を成す、段階的に長くなっていく URL パスコンポーネントの配列を返します。Array(String)
例
基本的な使い方
SELECT URLPathHierarchy('https://example.com/a/b?c=1')
['/a/','/a/b','/a/b?c=1']
cutFragment
導入バージョン: v1.1
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
URL から ? を含むクエリ文字列を削除します。
構文
引数
返される値
クエリ文字列を除いた URL を返します。String
例
使用例
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
導入バージョン: v1.1
URL からクエリ文字列およびフラグメント識別子(先頭の ? と # を含む)を削除します。
構文
cutQueryStringAndFragment(url)
引数
戻り値
クエリ文字列およびフラグメント識別子を除去した URL を返します。String
例
使用例
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
導入バージョン: v1.1
最初の重要なサブドメインまでの上位サブドメインを含むドメイン名の一部を返します。
構文
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
トップレベルドメインを含めて、最初の有意なサブドメインまでのドメイン名部分を返します。カスタムの 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>
<!-- NOTE: path is under 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
トップレベルドメインを含めて、最初の重要なサブドメインまでのドメイン部分を返します。
カスタムの 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')─────┐
│ www.foo │
└──────────────────────────────────────────────────────────────────────────────┘
cutToFirstSignificantSubdomainCustomWithWWW
導入バージョン: v21.1
最初の重要なサブドメインに到達するまでの上位サブドメインを含むドメイン部分を、'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>
<!-- NOTE: path is under 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
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')
cutToFirstSignificantSubdomainRFC
導入: v22.10
ドメインのうち、トップレベルサブドメインから「first significant subdomain」までを含む部分を返します。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
ドメインのうち、トップレベルのサブドメインから「最初の重要なサブドメイン」までの部分を、'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
トップレベルのサブドメインを「最初の重要なサブドメイン」に当たる部分まで含めたドメイン名の一部を、'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
URL に name パラメーターが存在する場合、それを削除します。
この関数はパラメーター名内の文字のエンコード/デコードを行いません。例えば、Client ID と Client%20ID は別のパラメーター名として扱われます。
構文
cutURLParameter(url, name)
引数
戻り値
name という URL パラメータが削除された 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
URL のドメインから、存在する場合は先頭の www. を削除します。
構文
引数
戻り値
ドメイン名から先頭の 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 │
└────────────────────────────────────────────────────────────┘
導入バージョン: v1.1
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
フォームエンコードの規則(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
URL からホスト名を抽出します。
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
URL からホスト名を抽出します。
domain と似ていますが、RFC 3986 に準拠しています。
構文
引数
戻り値
入力文字列が 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
URL のドメイン部分を返します。先頭に www. が付いている場合はそれを除きます。
構文
引数
戻り値
入力文字列が URL として解析可能な場合は、ドメイン名(先頭の www. を除く)を返し、それ以外の場合は空の文字列を返します。String
例
使用例
SELECT domainWithoutWWW('http://paul@www.example.com:80/');
┌─domainWithoutWWW('http://paul@www.example.com:80/')─┐
│ example.com │
└─────────────────────────────────────────────────────┘
domainWithoutWWWRFC
導入バージョン: v1.1
先頭に www. が付いている場合は、それを取り除いたドメイン名を返します。domainWithoutWWW と似ていますが、RFC 3986 に準拠しています。
構文
引数
戻り値
入力文字列が 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 │
└─────────────────────────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────┘
導入バージョン: v22.3
通常の文字列を受け取り、特殊文字を対応するパーセントエンコード表現に置き換えた 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 │
└──────────────────────────────────────────────────────────┘
導入バージョン: v22.3
文字列をフォームエンコード規則(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 │
└───────────────────────────────────────────────────────────┘
導入バージョン: v1.1
URL に name パラメータが存在する場合はその値を返し、存在しない場合は空文字列を返します。
同じ名前のパラメータが複数存在する場合は、最初に出現したものを返します。
この関数では、url 引数で渡された URL 中のパラメータが、name 引数と同じ方法でエンコードされていることを前提とします。
構文
extractURLParameter(url, name)
引数
戻り値
指定した名前の URL パラメータ値を返します。String
例
使用例
SELECT extractURLParameter('http://example.com/?param1=value1¶m2=value2', 'param1');
┌─extractURLPa⋯, 'param1')─┐
│ value1 │
└──────────────────────────┘
導入バージョン: v1.1
URL パラメーターの名前に対応する文字列の配列を返します。
値はデコードされません。
構文
extractURLParameterNames(url)
引数
返される値
URL パラメータ名に対応する文字列の配列を返します。Array(String)
例
使用例
SELECT extractURLParameterNames('http://example.com/?param1=value1¶m2=value2');
┌─extractURLPa⋯m2=value2')─┐
│ ['param1','param2'] │
└──────────────────────────┘
extractURLParameters
導入: v1.1
URL パラメータに対応する name=value 形式の文字列の配列を返します。
値はデコードされません。
構文
extractURLParameters(url)
引数
戻り値
URL パラメータに対応した name=value 形式の文字列配列を返します。Array(String)
例
使用例
SELECT extractURLParameters('http://example.com/?param1=value1¶m2=value2');
┌─extractURLParame⋯¶m2=value2')─┐
│ ['param1=value1','param2=value2'] │
└───────────────────────────────────┘
firstSignificantSubdomain
導入バージョン: v1.1
「first significant subdomain」(最初の有意なサブドメイン)を返します。
最初の有意なサブドメインは、第2レベルドメインが 'com'、'net'、'org'、または 'co' の場合には、その第2レベルドメインになります。
それ以外の場合は、第3レベルドメインになります。
例えば、firstSignificantSubdomain('https://news.clickhouse.com/') = 'clickhouse'、firstSignificantSubdomain ('https://news.clickhouse.com.tr/') = 'clickhouse' となります。
「重要ではない」とみなされる第2レベルドメインのリストや、その他の実装詳細は、将来変更される可能性があります。
構文
firstSignificantSubdomain(url)
引数
戻り値
例
firstSignificantSubdomain
SELECT firstSignificantSubdomain('https://news.clickhouse.com/')
firstSignificantSubdomainCustom
導入バージョン: v21.1
カスタム TLD(Top-Level Domain)リストを使用して、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')
firstSignificantSubdomainCustomRFC
導入: v22.10
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')
firstSignificantSubdomainRFC
導入: v22.10
RFC 1034 に基づき「最初の有意なサブドメイン」を返します。
構文
firstSignificantSubdomainRFC(url)
引数
戻り値
例
fragment
導入バージョン: v1.1
先頭のハッシュ記号(#)を除いたフラグメント識別子を返します。
構文
引数
戻り値
先頭のハッシュ記号を除いたフラグメント識別子を返します。String
例
使用例
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 │
└───────────────────────────────┘
netloc
導入バージョン: v20.5
URL からネットワーク位置(username:password@host:port)を抽出します。
構文
引数
返される値
指定された URL から username:password@host:port を返します。String
例
使用例
SELECT netloc('http://paul@www.example.com:80/');
┌─netloc('http⋯e.com:80/')─┐
│ paul@www.example.com:80 │
└──────────────────────────┘
path
導入バージョン: v1.1
URL からクエリ文字列を除いたパスを返します。
構文
引数
返り値
クエリ文字列を除いた URL のパスを返します。String
例
使用例
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/ │
└──────────────────────────────────────────────────────────────────────────────────────┘
pathFull
導入バージョン: v1.1
path と同様ですが、URL のクエリ文字列およびフラグメントも含みます。
構文
引数
返される値
クエリ文字列およびフラグメントを含む URL のパスを返します。String
例
使用例
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 │
└──────────────────────────────────────────────────────────────────┘
port
導入バージョン: v20.5
URL のポート番号を返します。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
ポート番号を返します。URL にポートが含まれていない場合、または 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:/⋯com:8080/')─┬─portRFC('htt⋯com:8080/')─┐
│ 0 │ 8080 │
└──────────────────────────┴──────────────────────────┘
protocol
導入バージョン: v1.1
URL からプロトコルを抽出します。
代表的な戻り値の例: http、https、ftp、mailto、tel、magnet。
構文
引数
戻り値
URL のプロトコル、または判別できない場合は空文字列を返します。String
例
使用例
SELECT protocol('https://clickhouse.com/');
┌─protocol('https://clickhouse.com/')─┐
│ https │
└─────────────────────────────────────┘
queryString
導入バージョン: v1.1
URL のクエリ文字列を返します。ただし、先頭の疑問符 ? は含めず、# および # 以降はすべて除外します。
構文
引数
戻り値
URL のクエリ文字列から先頭の疑問符とフラグメントを取り除いたものを返します。String
例
使用例
SELECT queryString('https://clickhouse.com/docs?query=value¶m=123#section');
┌─queryString(⋯3#section')─┐
│ query=value¶m=123 │
└──────────────────────────┘
queryStringAndFragment
導入バージョン: v1.1
URL のクエリ文字列とフラグメント識別子を返します。
構文
queryStringAndFragment(url)
引数
返される値
URL からクエリ文字列とフラグメント識別子を返します。String
例
使用例
SELECT queryStringAndFragment('https://clickhouse.com/docs?query=value¶m=123#section');
┌─queryStringAnd⋯=123#section')─┐
│ query=value¶m=123#section │
└───────────────────────────────┘
topLevelDomain
導入: v1.1
URL からトップレベルドメインを抽出します。
注記
URL はプロトコルの有無にかかわらず指定できます。
例:
svn+ssh://some.svn-hosting.com:80/repo/trunk
some.svn-hosting.com:80/repo/trunk
https://clickhouse.com/time/
構文
引数
戻り値
入力文字列を 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
URL からトップレベルドメインを抽出します。
topLevelDomain と似ていますが、RFC 3986 に準拠します。
構文
引数
返される値
入力文字列が 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 │
└────────────────────────────────────────────────┴───────────────────────────────────────────────────┘