概要
このセクションで説明する関数は、最大限のパフォーマンスが得られるよう最適化されており、ほとんどの場合 RFC-3986 標準には準拠していません。
RFC-3986 を実装する関数には、関数名の末尾に
RFC が付き、一般に低速です。@ 記号を含まない公開登録済みドメインを扱う場合は、RFC なしの関数バリアントを使用できます。
以下の表は、URL 内のどの記号を各 RFC および非 RFC バリアントで parse できるか (✔) またはできないか (✗) を示しています。
* が付いた記号は、RFC 3986 ではサブ区切り文字であり、@ 記号に続くユーザー情報で使用できます。
URL 関数には 2 種類あります。
- URL の一部を抽出する関数。該当する部分が URL に存在しない場合は、空文字列が返されます。
- URL の一部を削除する関数。URL に該当する部分がない場合、URL は変更されません。
以下の関数は、
system.functions システムテーブルから生成されています。URLHierarchy
導入バージョン: v1.1.0 URL を含む配列を返します。この配列では、パスおよびクエリ文字列内の/、?、# を区切りとして末尾側から切り詰められます。連続する区切り文字は 1 つとして扱われます。結果の最初の要素にはプロトコルとホストが含まれ、以降はより長いパスが階層的に並びます。
構文
url— 処理対象の URL。String
Array(String)
例
基本的な使い方
Query
Response
URLPathHierarchy
導入バージョン: v1.1.0 URL のパス部分を含む配列を返します。この配列は、末尾を/、?、# の各記号で区切った形に切り詰められます。URLHierarchy とは異なり、結果にはプロトコルとホストは含まれず、パスから始まります。連続する区切り文字は 1 文字として扱われます。
構文
url— 処理対象の URL。String
Array(String)
例
基本的な使い方
Query
Response
cutFragment
導入バージョン: v1.1.0 URL から、# を含むフラグメント識別子を削除します。 構文url— URL。String
String
例
使用例
Query
Response
cutQueryString
導入バージョン: v1.1.0 URL から、先頭の疑問符も含めてクエリ文字列を削除します。 構文url— URL。String
String
例
使用例
Query
Response
cutQueryStringAndFragment
導入バージョン: v1.1.0 URLから、疑問符 (?) とシャープ記号 (#) を含むクエリ文字列およびフラグメント識別子を削除します。 構文url— URL。String
String
例
使用例
Query
Response
cutToFirstSignificantSubdomain
導入バージョン: v1.1.0 ドメインのうち、最初の有意なサブドメインまでのトップレベルサブドメインを含む部分を返します。 構文url— 処理対象の URL またはドメイン文字列。String
String
例
使用例
Query
Response
cutToFirstSignificantSubdomainCustom
導入バージョン: v21.1.0 最初の有意なサブドメインに至るまでのトップレベルサブドメインを含む、ドメインの部分を返します。カスタムのTLD リスト名を指定できます。最新の TLD リストが必要な場合や、独自のリストがある場合に便利です。 設定例url— 処理する URL またはドメイン文字列。Stringtld_list_name— ClickHouse で設定したカスタム TLD リストの名前。const String
String
例
非標準ドメインでカスタム TLD リストを使用する
Query
Response
cutToFirstSignificantSubdomainCustomRFC
導入バージョン: v22.10.0 最初の有意なサブドメインまでのトップレベルサブドメインを含む、ドメインの部分を返します。 カスタムの TLD リスト 名を指定できます。 この関数は、最新の TLD リストが必要な場合や、独自のリストを使用している場合に便利です。 cutToFirstSignificantSubdomainCustom と似ていますが、RFC 3986 に準拠しています。 設定例url— RFC 3986 に従って処理される URL またはドメイン文字列。 -tld_list_name— ClickHouse で設定したカスタム TLD リストの名前。
String
例
使用例
Query
Response
cutToFirstSignificantSubdomainCustomWithWWW
導入バージョン: v21.1.0www を削除せず、最初の有意なサブドメインまでのトップレベルサブドメインを含むドメイン部分を返します。カスタム TLD リスト名を受け取ります。最新の TLD リストが必要な場合や、カスタム リストを使用している場合に便利です。
設定例
url— 処理対象の URL またはドメイン文字列。 -tld_list_name— ClickHouse で設定したカスタム TLD リストの名前。
www を削除せず、最初の意味のあるサブドメインまでのトップレベルサブドメインを含むドメインの一部。String
例
使用例
Query
Response
cutToFirstSignificantSubdomainCustomWithWWWRFC
導入バージョン: v22.10.0www を削除せずに、最初の有意なサブドメインまでのトップレベルサブドメインを含むドメイン部分を返します。
カスタム TLD リスト名を受け取ります。
新しい TLD リストが必要な場合や、カスタム リストがある場合に役立ちます。
cutToFirstSignificantSubdomainCustomWithWWW と似ていますが、RFC 3986 に準拠しています。
設定例
url— RFC 3986 に従って処理する URL またはドメイン文字列。 -tld_list_name— ClickHouse で設定したカスタム TLD リストの名前。
www を削除せず、トップレベルサブドメインから最初の有意なサブドメインまでを含むドメイン部分を返します。String
例
カスタム TLD リストを使用して www を保持した RFC 3986 パース
Query
Response
cutToFirstSignificantSubdomainRFC
導入バージョン: v22.10.0 トップレベルサブドメインから”最初の有意なサブドメイン”までを含むドメイン部分を返します。cutToFirstSignificantSubdomain と似ていますが、RFC 3986 に準拠しています。
構文
url— RFC 3986 に従って処理する URL またはドメイン文字列。String
String
例
使用例
Query
Response
cutToFirstSignificantSubdomainWithWWW
導入バージョン: v20.12.0 ドメインのうち、上位サブドメインから “最初の有意なサブドメイン” までを含む部分を返します。‘www.’ は削除しません。cutToFirstSignificantSubdomain と似ていますが、存在する場合は ‘www.’ プレフィックスを保持します。
構文
url— 処理対象の URL またはドメイン文字列。String
String
例
使用例
Query
Response
cutToFirstSignificantSubdomainWithWWWRFC
導入バージョン: v22.10.0www を削除せず、トップレベルサブドメインから「最初の有意なサブドメイン」までを含むドメイン部分を返します。cutToFirstSignificantSubdomainWithWWW に似ていますが、RFC 3986 に準拠しています。
構文
url— RFC 3986 に従って処理する URL またはドメイン文字列。
www を含むトップレベルサブドメインを含む) を返します。該当しない場合は、空文字列 String を返します。
例
使用例
Query
Response
cutURLParameter
導入バージョン: v1.1.0 URL から、指定された各パラメータについて最初に出現するname=value を削除します。
name= と表記されたパラメータのみが一致するため、値を持たないフラグパラメータはそのまま残ります。たとえば、cutURLParameter('http://bigmir.net/?a&c=d', 'a') は URL を変更せずに返します。
この関数は、パラメータ名の文字をエンコードまたはデコードしません。たとえば、Client ID と Client%20ID は別のパラメータ名として扱われます。
構文
url— URL。Stringname— URL パラメータ名。StringまたはArray(String)
name=value を削除した URL。 String
例
使用例
Query
Response
cutWWW
導入バージョン: v1.1.0 URL のドメインの先頭にwww. がある場合は、それを削除します。
構文
url— URL。String
www. を除去した URL を返します。 String
例
使用例
Query
Response
decodeURLComponent
導入バージョン: v1.1.0 URLエンコードされた文字列を入力として受け取り、元の可読な形式に戻します。 構文url— URL。String
String
例
使用例
Query
Response
decodeURLFormComponent
導入バージョン: v1.1.0 フォームエンコーディングのルール (RFC-1866) に従って URL エンコードされた文字列をデコードします。このルールでは、+ 記号は空白に変換され、パーセントエンコードされた文字はデコードされます。
構文
url_decode
引数
url— URL。String
String
例
使用例
Query
Response
domain
導入バージョン: v1.1.0 URL からホスト名を抽出します。 URL は、プロトコルの有無にかかわらず指定できます。 構文url— URL。String
String
例
使用例
Query
Response
domainRFC
導入バージョン: v22.10.0 URL からホスト名を抽出します。domain に似ていますが、RFC 3986 に準拠しています。
構文
url_extract_host
引数
url— URL。String
String
例
使用例
Query
Response
domainWithoutWWW
導入バージョン: v1.1.0 URL の先頭にwww. がある場合、それを除いたドメインを返します。
構文
url— URL。String
www. を除く) を返し、そうでない場合は空文字列を返します。String
例
使用例
Query
Response
domainWithoutWWWRFC
導入バージョン: v1.1.0 先頭にwww. が付いている場合は、それを除いたドメインを返します。domainWithoutWWW と似ていますが、RFC 3986 に準拠しています。
構文
url— URL。String
www. を除く) を返し、そうでない場合は空文字列を返します。String
例
使用例
Query
Response
encodeURLComponent
導入バージョン: v22.3.0 通常の文字列を受け取り、特殊文字を対応するパーセントエンコード表現に置き換えた URL エンコード (パーセントエンコード) 形式に変換します。 構文url— URL。String
String
例
使用例
Query
Response
encodeURLFormComponent
導入バージョン: v22.3.0 フォームエンコードの規則 (RFC-1866) に従って文字列をエンコードします。このとき、スペースは+ 記号に変換され、特殊文字はパーセントエンコードされます。
構文
url_encode
引数
url— URL。String
String
例
使用例
Query
Response
extractURLParameter
導入バージョン: v1.1.0 URL にname パラメータが存在する場合はその値を返し、存在しない場合は空文字列を返します。
この名前のパラメータが複数ある場合は、最初に出現したものが返されます。
この関数は、url 引数内のパラメータが name 引数と同じ方法でエンコードされていることを前提としています。
構文
String
例
使用例
Query
Response
extractURLParameterNames
導入バージョン: v1.1.0 URLパラメータ名に対応する文字列の配列を返します。 値はデコードされません。 構文url— URL。String
Array(String)
例
使用例
Query
Response
extractURLParameters
導入バージョン: v1.1.0 URLパラメータに対応するname=value 形式の文字列の配列を返します。
値はデコードされません。
構文
url— URL。String
name=value 形式の文字列の配列を返します。 Array(String)
例
使用例
Query
Response
firstSignificantSubdomain
導入バージョン: v1.1.0 “最初の有意なサブドメイン” を返します。 最初の有意なサブドメイン は、‘com’、‘net’、‘org’、または ‘co’ の場合は第2レベルドメインです。 それ以外の場合は、第3レベルドメインです。 たとえば、firstSignificantSubdomain(‘https://news.clickhouse.com/') = ‘clickhouse’、firstSignificantSubdomain (‘https://news.clickhouse.com.tr/') = ‘clickhouse’ です。 “重要でない” 第2レベルドメインの一覧やその他の実装詳細は、将来変更される可能性があります。 構文- なし。
Query
Response
firstSignificantSubdomainCustom
導入バージョン: v21.1.0 カスタム TLD (トップレベルドメイン) リストを使用して、URL の最初の有意なサブドメインを返します。カスタム TLD リスト名は、どのドメイン接尾辞をトップレベルドメインとして扱うかを定義する設定を参照します。これは、非標準の TLD 階層で役立ちます。この関数は、プロトコルおよびそれ以降のすべてが取り除かれていることを前提とする、簡略化された URL パースアルゴリズムを使用します。 構文String
例
基本的な使い方
Query
Response
firstSignificantSubdomainCustomRFC
導入バージョン: v22.10.0firstSignificantSubdomainCustom と似ていますが、簡略化されたアルゴリズムではなく、RFC 3986 に準拠した URL パースを使用します。
構文
String
例
基本的な使い方
Query
Response
firstSignificantSubdomainRFC
導入バージョン: v22.10.0 RFC 1034 に従って「最初の有意なサブドメイン」を返します。 構文- なし。
fragment
導入バージョン: v1.1.0 先頭のハッシュ記号を除いたフラグメント識別子を返します。 構文url— URL。String
String
例
使用例
Query
Response
netloc
導入バージョン: v20.5.0 URL からネットワークロケーション (username:password@host:port) を抽出します。
構文
url— URL。String
username:password@host:port を返します。 String
例
使用例
Query
Response
path
導入バージョン: v1.1.0 URLからクエリ文字列を除いたパスを返します。 構文url— URL。String
String
例
使用例
Query
Response
pathFull
導入バージョン: v1.1.0path と同様ですが、URL のクエリ文字列とフラグメントも含みます。
構文
url— URL。String
String
例
使用例
Query
Response
port
導入バージョン: v20.5.0 URL のポートを返します。URL にポートが含まれていない場合、または解析できない場合は、default_port を返します。
構文
UInt16
例
使用例
Query
Response
portRFC
導入バージョン: v22.10.0 URL にポートが含まれていない場合、または解析できない場合は、ポートまたはdefault_port を返します。
port と似ていますが、RFC 3986 に準拠しています。
構文
UInt16
例
使用例
Query
Response
protocol
導入バージョン: v1.1.0 URLからプロトコルを抽出します。 代表的な戻り値の例: http、https、ftp、mailto、tel、magnet。 構文url_extract_protocol
引数
url— URL。String
String
例
使用例
Query
Response
queryString
導入バージョン: v1.1.0 URL のクエリ文字列から、先頭の疑問符、#、および # 以降のすべてを除いた文字列を返します。
構文
url— URL。String
String
例
使用例
Query
Response
queryStringAndFragment
導入バージョン: v1.1.0 URL のクエリ文字列とフラグメント識別子を返します。 構文url— URL。String
String
例
使用例
Query
Response
topLevelDomain
導入バージョン: v1.1.0 URL からトップレベルドメインを抽出します。URL はプロトコルの有無にかかわらず指定できます。
例:
url— URL。String
String
例
使用例
Query
Response
topLevelDomainRFC
導入バージョン: v22.10.0 URL からトップレベルドメインを抽出します。topLevelDomain と似ていますが、RFC 3986 に準拠しています。
構文
url— URL。String
String
例
使用例
Query
Response