文字列の検索および文字列の置換を行う関数については、別途説明しています。
CRC32
導入バージョン: v20.1.0
CRC-32-IEEE 802.3 多項式と初期値 0xffffffff (zlib 実装) を使用して、文字列の CRC32 チェックサムを計算します。
構文
CRC32(s)引数
s— CRC32 を計算する文字列。String
戻り値
文字列の CRC32 チェックサムを返します。UInt32
例
使用例
SELECT CRC32('ClickHouse')┌─CRC32('ClickHouse')─┐
│ 1538217360 │
└─────────────────────┘CRC32IEEE
導入バージョン: v20.1.0
CRC-32-IEEE 802.3多項式を使用して、文字列のCRC32チェックサムを計算します。
構文
CRC32IEEE(s)引数
s— CRC32 を計算する対象の文字列です。String
戻り値
文字列の CRC32 チェックサムを返します。UInt32
例
使用例
SELECT CRC32IEEE('ClickHouse');┌─CRC32IEEE('ClickHouse')─┐
│ 3089448422 │
└─────────────────────────┘CRC64
導入バージョン: v20.1.0
CRC-64-ECMA多項式を用いて、文字列のCRC64チェックサムを計算します。
構文
CRC64(s)引数
s— CRC64 を計算する文字列。String
戻り値
文字列の CRC64 チェックサムを返します。UInt64
例
使用例
SELECT CRC64('ClickHouse');┌──CRC64('ClickHouse')─┐
│ 12126588151325169346 │
└──────────────────────┘appendTrailingCharIfAbsent
導入バージョン: v1.1.0
s が空でなく、末尾が文字 c でない場合は、文字列 s の末尾に文字 c を追加します。
構文
appendTrailingCharIfAbsent(s, c)引数
戻り値
s が c で終わっていない場合、文字 c を末尾に追加した文字列 s を返します。String
例
使用例
SELECT appendTrailingCharIfAbsent('https://example.com', '/');┌─appendTrailingCharIfAbsent('https://example.com', '/')─┐
│ https://example.com/ │
└────────────────────────────────────────────────────────┘ascii
導入バージョン: v22.11.0
文字列 s の最初の文字の ASCII コードポイントを Int32 として返します。
構文
ascii(s)引数
s— String 型の入力。String
戻り値
最初の文字の ASCII コードポイントを返します。s が空の場合、結果は 0 です。最初の文字が ASCII 文字でない場合、または UTF-16 の Latin-1 Supplement 範囲に含まれない場合、結果は未定義です。Int32
例
使用例
SELECT ascii('234')┌─ascii('234')─┐
│ 50 │
└──────────────┘base32Decode
導入バージョン: v25.6.0
Base32 (RFC 4648) 文字列をデコードします。 文字列が有効な Base32 エンコードでない場合は、例外がスローされます。
構文
base32Decode(encoded)引数
encoded— String 型のカラムまたは定数。String
戻り値
引数をデコードした値を含む文字列を返します。String
例
使用例
SELECT base32Decode('IVXGG33EMVSA====');┌─base32Decode('IVXGG33EMVSA====')─┐
│ Encoded │
└──────────────────────────────────┘base32Encode
導入バージョン: v25.6.0
文字列を Base32 でエンコードします。
構文
base32Encode(plaintext)引数
plaintext— エンコードする平文。String
戻り値
引数をエンコードした値を含む文字列を返します。String または FixedString
例
使用例
SELECT base32Encode('Encoded')┌─base32Encode('Encoded')─┐
│ IVXGG33EMVSA==== │
└─────────────────────────┘base58Decode
導入バージョン: v22.7.0
Base58 文字列をデコードします。
文字列が有効な Base58 エンコードでない場合は、例外が発生します。
最適化された固定サイズのデコーダーを選択するために、省略可能な第2引数 expected_size を指定できます。
現在サポートされている値は 32 と 64 です。それ以外の値では、汎用デコーダーが使用されます。
最適化デコーダーが選択されていても、入力をそのバイト数ちょうどにデコードできない場合、
関数は例外を発生させます (tryBase58Decode の場合は空文字列を返します) 。
構文
base58Decode(encoded[, expected_size])引数
encoded— デコード対象のStringカラムまたは定数。Stringexpected_size— 省略可。デコード後の想定サイズ (バイト単位) 。32 または 64 の場合は最適化されたデコーダーが使用され、それ以外の値では汎用デコーダーが使用されます。UInt8, UInt16, UInt32, or UInt64
戻り値
引数をデコードした値を含む文字列を返します。String
例
使用例
SELECT base58Decode('JxF12TrwUP45BMd');┌─base58Decode('JxF12TrwUP45BMd')─┐
│ Hello World │
└─────────────────────────────────┘base58Encode
導入バージョン: v22.7.0
文字列を Base58 形式でエンコードします。
構文
base58Encode(plaintext)引数
plaintext— エンコードする平文。String
戻り値
引数をエンコードした値を含む文字列を返します。String
例
使用例
SELECT base58Encode('ClickHouse');┌─base58Encode('ClickHouse')─┐
│ 4nhk8K7GHXf6zx │
└────────────────────────────┘base64Decode
導入バージョン: v18.16.0
RFC 4648 に従い、Base64 表現から文字列をデコードします。
バージョン 26.7 以降では、入力中の空白文字であるスペース、タブ (\t)、改行 (\n)、キャリッジリターン (\r)、およびフォームフィード (\f) は無視されます (それ以前のバージョンでは、これらを含む入力は拒否されていました) 。垂直タブ (\v) と、Base64 アルファベットに含まれないその他の文字は拒否されます。
エラー時には例外をスローします。
構文
base64Decode(encoded)別名: FROM_BASE64
引数
encoded— デコードするString型のカラムまたは定数。文字列が有効な Base64 形式でエンコードされていない場合は、例外がスローされます。String
戻り値
デコードされた文字列を返します。String
例
使用例
SELECT base64Decode('Y2xpY2tob3VzZQ==')┌─base64Decode('Y2xpY2tob3VzZQ==')─┐
│ clickhouse │
└──────────────────────────────────┘base64Encode
導入バージョン: v18.16.0
RFC 4648 に従って、文字列を Base64 形式にエンコードします。
構文
base64Encode(plaintext)別名: TO_BASE64
引数
plaintext— デコードする平文のカラムまたは定数。String
戻り値
引数をエンコードした値を含む文字列を返します。String
例
使用例
SELECT base64Encode('clickhouse')┌─base64Encode('clickhouse')─┐
│ Y2xpY2tob3VzZQ== │
└────────────────────────────┘base64URLDecode
導入バージョン: v24.6.0
RFC 4648 に従い、URL セーフなアルファベットを使用した Base64 表現から文字列をデコードします。
デコード時には、標準アルファベット (+ および /) も受け付けます。
バージョン 26.7 以降では、入力内の空白文字である space、tab (\t) 、line feed (\n) 、carriage return (\r) 、および form feed (\f) は無視されます (それ以前のバージョンでは、これらを含む入力は拒否されていました) 。Vertical tab (\v) および Base64 アルファベットに含まれないその他の文字は拒否されます。
エラー時には例外をスローします。
構文
base64URLDecode(encoded)引数
encoded— エンコード対象のString型のカラムまたは定数。文字列が有効な Base64 エンコード形式でない場合は、例外がスローされます。String
戻り値
引数をデコードした値を含む文字列を返します。String
例
使用例
SELECT base64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ')┌─base64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ')─┐
│ https://clickhouse.com │
└───────────────────────────────────────────────────┘base64URLEncode
導入バージョン: v18.16.0
URLセーフなアルファベットを使用して、文字列を Base64 (RFC 4648) 形式でエンコードします。
構文
base64URLEncode(plaintext)引数
plaintext— エンコードする平文のカラムまたは定数。String
戻り値
引数をエンコードした値を含む文字列を返します。String
例
使用例
SELECT base64URLEncode('https://clickhouse.com')┌─base64URLEncode('https://clickhouse.com')─┐
│ aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ │
└───────────────────────────────────────────┘basename
導入バージョン: v20.1.0
文字列の最後のスラッシュまたはバックスラッシュの後にある末尾部分を抽出します。 この関数は、パスからファイル名を抽出するためによく使用されます。
構文
basename(expr)引数
expr— 文字列式です。バックスラッシュはエスケープする必要があります。String
戻り値
入力文字列のうち、最後のスラッシュまたはバックスラッシュより後ろの部分を返します。入力文字列がスラッシュまたはバックスラッシュで終わる場合、この関数は空文字列を返します。スラッシュまたはバックスラッシュが含まれていない場合は、元の文字列を返します。 String
例
Unix パスからファイル名を抽出
SELECT 'some/long/path/to/file' AS a, basename(a)┌─a──────────────────────┬─basename(a)─┐
│ some/long/path/to/file │ file │
└────────────────────────┴─────────────┘Windows パスからファイル名を抽出
SELECT 'some\\long\\path\\to\\file' AS a, basename(a)┌─a──────────────────────┬─basename(a)─┐
│ some\long\path\to\file │ file │
└────────────────────────┴─────────────┘パス区切り文字のない文字列
SELECT 'some-file-name' AS a, basename(a)┌─a──────────────┬─basename(a)────┐
│ some-file-name │ some-file-name │
└────────────────┴────────────────┘byteHammingDistance
導入バージョン: v23.9.0
2つのバイト文字列間のハミング距離を計算します。
構文
byteHammingDistance(s1, s2)別名: mismatches
引数
戻り値
2 つの文字列のハミング距離を返します。UInt64
例
使用例
SELECT byteHammingDistance('karolin', 'kathrin')┌─byteHammingDistance('karolin', 'kathrin')─┐
│ 3 │
└───────────────────────────────────────────┘caseFoldUTF8
導入バージョン: v26.3.0
UTF-8文字列に Unicode のケースフォールディングを適用し、大文字と小文字を区別しない比較に適した、小文字化に近い正規化済みの形式に変換します。
標準の Unicode ケースフォールディングを適用します。ケースフォールディングの影響を受けない互換文字
(例: ローマ数字、丸付き数字) は保持されますが、ffi のような一部の合字は、Unicode のケースフォールディング自体によって展開されるため、引き続き分解される点に注意してください。
構文
caseFoldUTF8(str)引数
str— UTF-8 でエンコードされた入力文字列。String
戻り値
ケースフォールディングされた UTF-8 文字列。String
例
基本的なケースフォールディング
SELECT caseFoldUTF8('Straße')┌─caseFoldUTF8('Straße')─┐
│ strasse │
└────────────────────────┘compareSubstrings
導入バージョン: v25.2.0
2つの文字列を辞書式順序で比較します。
構文
compareSubstrings(s1, s2, s1_offset, s2_offset, num_bytes)引数
s1— 比較対象の1つ目の文字列です。Strings2— 比較対象の2つ目の文字列です。Strings1_offset— 比較を開始するs1内の位置 (0から始まる) です。UInt*s2_offset— 比較を開始するs2内の位置 (0から始まるインデックス) です。UInt*num_bytes— 両方の文字列で比較する最大バイト数です。s1_offset(またはs2_offset) +num_bytesが入力文字列の末尾を超える場合、num_bytesはそれに応じて短くなります。UInt*
戻り値
以下を返します。
s1[s1_offset:s1_offset+num_bytes] <s2[s2_offset:s2_offset+num_bytes] の場合は-1。s1[s1_offset:s1_offset+num_bytes] =s2[s2_offset:s2_offset+num_bytes] の場合は0。s1[s1_offset:s1_offset+num_bytes] >s2[s2_offset:s2_offset+num_bytes] の場合は1。Int8
例
使用例
SELECT compareSubstrings('Saxony', 'Anglo-Saxon', 0, 6, 5) AS result┌─result─┐
│ 0 │
└────────┘concat
導入バージョン: v1.1.0
指定された引数を連結します。
String または FixedString 型以外の引数は、デフォルトのシリアライゼーションを使用して文字列に変換されます。
ただし、これによりパフォーマンスが低下するため、String/FixedString 以外の引数の使用は推奨されません。
構文
concat([s1, s2, ...])引数
s1, s2, ...— 任意の型の値を任意の数だけ指定できます。Any
戻り値
引数を連結して生成された文字列を返します。引数のいずれかが NULL の場合、この関数は NULL を返します。引数がない場合は、空文字列を返します。Nullable(String)
例
文字列の連結
SELECT concat('Hello, ', 'World!')┌─concat('Hello, ', 'World!')─┐
│ Hello, World! │
└─────────────────────────────┘数値の連結
SELECT concat(42, 144)┌─concat(42, 144)─┐
│ 42144 │
└─────────────────┘concatAssumeInjective
導入バージョン: v1.1.0
concat と似ていますが、concat(s1, s2, ...) → sn が単射、
つまり引数が異なれば結果も異なると仮定します。
GROUP BY の最適化に利用できます。
構文
concatAssumeInjective([s1, s2, ...])引数
s1, s2, ...— 任意の型の値を、任意の数だけ指定できます。StringまたはFixedString
戻り値
引数を連結して作成された文字列を返します。いずれかの引数の値が NULL の場合、この関数は NULL を返します。引数が渡されない場合は、空文字列を返します。String
例
GROUP BYの最適化
CREATE TABLE key_val (key1 String, key2 String, value UInt32) ENGINE = Memory;
INSERT INTO key_val VALUES ('Hello, ', 'World!', 1), ('Hello, ', 'World!', 2), ('Hello, ', 'World', 3);
SELECT concatAssumeInjective(key1, key2) AS key, sum(value) FROM key_val GROUP BY key ORDER BY key;┌─key───────────┬─sum(value)─┐
│ Hello, World │ 3 │
│ Hello, World! │ 3 │
└───────────────┴────────────┘concatWithSeparator
導入バージョン: v22.12.0
指定した区切り文字を挟んで、与えられた文字列を連結します。
構文
concatWithSeparator(sep[, exp1, exp2, ...])別名: concat_ws
引数
sep— 使用する区切り文字。const Stringまたはconst FixedStringexp1, exp2, ...— 連結する式。型がStringまたはFixedStringではない引数は、デフォルトのシリアライゼーションを使用して文字列に変換されます。パフォーマンスが低下するため、String/FixedString 以外の引数の使用は推奨されません。Any
戻り値
引数を連結して作成した String を返します。引数値のいずれかが NULL の場合、この関数は NULL を返します。String
例
使用例
SELECT concatWithSeparator('a', '1', '2', '3', '4')┌─concatWithSeparator('a', '1', '2', '3', '4')─┐
│ 1a2a3a4 │
└──────────────────────────────────────────────┘concatWithSeparatorAssumeInjective
導入バージョン: v22.12.0
concatWithSeparator と同様ですが、concatWithSeparator(sep[,exp1, exp2, ... ]) → result が単射であるとみなします。
異なる引数に対して異なる結果を返す関数は、単射であると呼ばれます。
GROUP BY の最適化に使用できます。
構文
concatWithSeparatorAssumeInjective(sep[, exp1, exp2, ... ])引数
sep— 使用する区切り文字。const Stringまたはconst FixedStringexp1, exp2, ...— 連結する式。型がStringまたはFixedStringではない引数は、デフォルトのシリアライゼーションを使用して文字列に変換されます。これはパフォーマンス低下につながるため、String/FixedString以外の引数の使用は推奨されません。StringまたはFixedString
戻り値
引数を連結して作成された String を返します。いずれかの引数の値が NULL の場合、この関数は NULL を返します。String
例
使用例
CREATE TABLE user_data (
user_id UInt32,
first_name String,
last_name String,
score UInt32
)
ENGINE = MergeTree
ORDER BY tuple();
INSERT INTO user_data VALUES
(1, 'John', 'Doe', 100),
(2, 'Jane', 'Smith', 150),
(3, 'John', 'Wilson', 120),
(4, 'Jane', 'Smith', 90);
SELECT
concatWithSeparatorAssumeInjective('-', first_name, last_name) as full_name,
sum(score) as total_score
FROM user_data
GROUP BY concatWithSeparatorAssumeInjective('-', first_name, last_name);┌─full_name───┬─total_score─┐
│ Jane-Smith │ 240 │
│ John-Doe │ 100 │
│ John-Wilson │ 120 │
└─────────────┴─────────────┘conv
導入バージョン: v25.10.0
異なる基数間で数値を変換します。
この関数は、ある基数の数値を別の基数に変換します。対応する基数は 2 から 36 までです。 10 を超える基数では、10~35 の値を表すために文字 A-Z (大文字と小文字は区別されません) が使用されます。
この関数は MySQL の CONV() 関数と互換性があります。
構文
conv(number, from_base, to_base)引数
number— 変換する数値。文字列型または数値型を指定できます。 -from_base— 変換元の基数 (2~36) 。整数である必要があります。 -to_base— 変換先の基数 (2~36) 。整数である必要があります。
戻り値
変換先の基数で表した数値の文字列表現。
例
10進数を2進数に変換
SELECT conv('10', 10, 2)101016進数を10進数に変換
SELECT conv('FF', 16, 10)255負の数への変換
SELECT conv('-1', 10, 16)FFFFFFFFFFFFFFFF2進数を8進数に変換する
SELECT conv('1010', 2, 8)12convertCharset
導入バージョン: v1.1.0
文字列 s を、エンコーディング from からエンコーディング to に変換して返します。
構文
convertCharset(s, from, to)引数
戻り値
エンコーディング from から to に変換された文字列 s を返します。String
例
使用例
SELECT convertCharset('Café', 'UTF-8', 'ISO-8859-1');┌─convertCharset('Café', 'UTF-8', 'ISO-8859-1')─┐
│ Caf� │
└───────────────────────────────────────────────┘damerauLevenshteinDistance
導入バージョン: v24.1.0
2 つのバイト文字列間の ダメラウ・レーベンシュタイン距離 を計算します。
構文
damerauLevenshteinDistance(s1, s2)引数
戻り値
2 つの文字列間のダメラウ・レーベンシュタイン距離を返します。 UInt64
例
使用例
SELECT damerauLevenshteinDistance('clickhouse', 'mouse')┌─damerauLevenshteinDistance('clickhouse', 'mouse')─┐
│ 6 │
└───────────────────────────────────────────────────┘decodeHTMLComponent
導入バージョン: v23.9.0
文字列内のHTMLエンティティを対応する文字にデコードします。
構文
decodeHTMLComponent(s)引数
s— デコード対象の HTML エンティティを含む String。String
戻り値
HTML エンティティをデコードした文字列を返します。String
例
使用例
SELECT decodeHTMLComponent('<div>Hello & "World"</div>')┌─decodeHTMLComponent('<div>Hello & "World"</div>')─┐
│ <div>Hello & "World"</div> │
└─────────────────────────────────────────────────────────────────────────────┘decodeXMLComponent
導入バージョン: v21.2.0
文字列内の XML エンティティを対応する文字にデコードします。
構文
decodeXMLComponent(s)引数
s— デコード対象の XML エンティティを含む文字列。String
戻り値
指定された文字列内の XML エンティティをデコードした結果を返します。String
例
使用例
SELECT decodeXMLComponent('<tag>Hello & World</tag>')┌─decodeXMLComponent('<tag>Hello & World</tag>')─┐
│ <tag>Hello & World</tag> │
└────────────────────────────────────────────────────────────────┘editDistance
導入バージョン: v23.9.0
2つのバイト文字列間の編集距離を計算します。
構文
editDistance(s1, s2)別名: levenshteinDistance
引数
戻り値
2つの文字列間の編集距離を返します。UInt64
例
使用例
SELECT editDistance('clickhouse', 'mouse')┌─editDistance('clickhouse', 'mouse')─┐
│ 6 │
└─────────────────────────────────────┘editDistanceUTF8
導入バージョン: v24.6.0
2つの UTF-8 文字列間の編集距離を計算します。
構文
editDistanceUTF8(s1, s2)別名: levenshteinDistanceUTF8
引数
戻り値
2 つの UTF-8 文字列間の編集距離を返します。UInt64
例
使用例
SELECT editDistanceUTF8('我是谁', '我是我') AS distance┌─distance─┐
│ 1 │
└──────────┘encodeXMLComponent
導入バージョン: v21.1.0
文字列を XML のテキストノードまたは属性値に埋め込めるよう、文字列内の文字をエスケープします。
構文
encodeXMLComponent(s)引数
s— エスケープする文字列。String
戻り値
エスケープされた文字列を返します。String
例
使用例
SELECT
'<tag>Hello & "World"</tag>' AS original,
encodeXMLComponent('<tag>Hello & "World"</tag>') AS xml_encoded;┌─original───────────────────┬─xml_encoded──────────────────────────────────────────┐
│ <tag>Hello & "World"</tag> │ <tag>Hello & "World"</tag> │
└────────────────────────────┴──────────────────────────────────────────────────────┘endsWith
導入バージョン: v1.1.0
文字列が指定された接尾辞で終わるかどうかを返します。
構文
endsWith(s, suffix)引数
戻り値
s が suffix で終わる場合は 1、それ以外の場合は 0 を返します。 UInt8
例
使用例
SELECT endsWith('ClickHouse', 'House');┌─endsWith('ClickHouse', 'House')─┐
│ 1 │
└─────────────────────────────────┘endsWithCaseInsensitive
導入バージョン: v25.10.0
文字列が、指定された大文字・小文字を区別しない接尾辞で終わるかどうかを判定します。
構文
endsWithCaseInsensitive(s, suffix)引数
戻り値
s が大文字・小文字を区別しない suffix で終わる場合は 1、それ以外の場合は 0 を返します。 UInt8
例
使用例
SELECT endsWithCaseInsensitive('ClickHouse', 'HOUSE');┌─endsWithCaseInsensitive('ClickHouse', 'HOUSE')─┐
│ 1 │
└────────────────────────────────────────────────┘endsWithCaseInsensitiveUTF8
導入バージョン: v25.10.0
文字列 s が、大文字・小文字を区別しない suffix で終わるかどうかを返します。
文字列には、有効な UTF-8 でエンコードされたテキストが含まれているものとします。
この前提が満たされない場合、例外はスローされず、結果は未定義です。
構文
endsWithCaseInsensitiveUTF8(s, suffix)引数
戻り値
s が大文字・小文字を区別しない suffix で終わる場合は 1、それ以外の場合は 0 を返します。UInt8
例
使用例
SELECT endsWithCaseInsensitiveUTF8('данных', 'ых');┌─endsWithCaseInsensitiveUTF8('данных', 'ых')─┐
│ 1 │
└─────────────────────────────────────────────┘endsWithUTF8
導入バージョン: v23.8.0
文字列 s が suffix で終わるかどうかを返します。
文字列には、有効な UTF-8 でエンコードされたテキストが含まれていることを前提としています。
この前提が満たされない場合でも、例外は発生せず、結果は未定義です。
構文
endsWithUTF8(s, suffix)引数
戻り値
s が suffix で終わる場合は 1、それ以外の場合は 0 を返します。UInt8
例
使用例
SELECT endsWithUTF8('данных', 'ых');┌─endsWithUTF8('данных', 'ых')─┐
│ 1 │
└──────────────────────────────┘extractTextFromHTML
導入バージョン: v21.3.0
HTML または XHTML からテキストコンテンツを抽出します。
この関数は HTML タグ、コメント、script/style 要素を削除し、テキストコンテンツのみを残します。具体的には、次の処理を行います。
- すべての HTML/XML タグの削除
- コメント (
{/* */}) の削除 - script 要素および style 要素とその内容の削除
- CDATA セクションの処理 (そのままコピー)
- 空白の適切な処理と正規化
注意: HTML エンティティはデコードされないため、必要に応じて別の関数で処理してください。
構文
extractTextFromHTML(html)引数
html— テキストの抽出元となる HTML コンテンツを含む文字列。String
戻り値
空白を正規化した抽出済みのテキストコンテンツを返します。String
例
使用例
SELECT extractTextFromHTML('
<html>
<head><title>Page Title</title></head>
<body>
<p>Hello <b>World</b>!</p>
<script>alert("test");</script>
<!-- comment -->
</body>
</html>
');┌─extractTextFromHTML('\n<html>\n <head><title>Page Title</title></head>\n <body>\n <p>Hello <b>World</b>!</p>\n <script>alert("test");</script>\n <!-- comment -->\n </body>\n</html>\n')─┐
│ Page Title Hello World ! │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘firstLine
導入バージョン: v23.7.0
複数行文字列の最初の行を返します。
構文
firstLine(s)引数
s— 入力文字列。String
戻り値
入力文字列の最初の行を返します。行区切り文字がない場合は、文字列全体を返します。String
例
使用例
SELECT firstLine('foo\\nbar\\nbaz')┌─firstLine('foo\\nbar\\nbaz')─┐
│ foo\nbar\nbaz │
└──────────────────────────────┘idnaDecode
導入バージョン: v24.1.0
Internationalized Domain Names in Applications (IDNA) に従い、ドメイン名の Unicode (UTF-8) 表現 (ToUnicode アルゴリズム) を返します。
エラーが発生した場合 (たとえば入力が無効な場合) は、入力文字列をそのまま返します。
大文字・小文字の正規化が行われるため、idnaEncode() と idnaDecode() を繰り返し適用しても、必ずしも元の文字列に戻るとは限りません。
構文
idnaDecode(s)引数
s— 入力文字列。String
戻り値
入力値の IDNA 方式に従って、入力文字列の Unicode (UTF-8) 表現を返します。String
例
使用例
SELECT idnaDecode('xn--strae-oqa.xn--mnchen-3ya.de')┌─idnaDecode('xn--strae-oqa.xn--mnchen-3ya.de')─┐
│ straße.münchen.de │
└───────────────────────────────────────────────┘idnaEncode
導入バージョン: v24.1.0
Internationalized Domain Names in Applications (IDNA) の方式に従い、ドメイン名の ASCII 表現 (ToASCII アルゴリズム) を返します。 入力文字列は UTF エンコードされており、ASCII 文字列に変換可能である必要があります。そうでない場合は例外がスローされます。
構文
idnaEncode(s)引数
s— 入力文字列。String
戻り値
入力値に対する IDNA 方式に従い、入力文字列の ASCII 表現を返します。String
例
使用例
SELECT idnaEncode('straße.münchen.de')┌─idnaEncode('straße.münchen.de')─┐
│ xn--strae-oqa.xn--mnchen-3ya.de │
└─────────────────────────────────┘initcap
導入バージョン: v23.7.0
各単語の先頭文字を大文字に、それ以外の文字を小文字に変換します。 単語は、英数字以外の文字で区切られた英数字の連続です。
構文
initcap(s)引数
s— 入力文字列。String
戻り値
各単語の先頭文字を大文字にした s を返します。String
例
使用例
SELECT initcap('building for fast')┌─initcap('building for fast')─┐
│ Building For Fast │
└──────────────────────────────┘アポストロフィや大文字を含む単語における既知の挙動の例
SELECT initcap('John''s cat won''t eat.');┌─initcap('John\'s cat won\'t eat.')─┐
│ John'S Cat Won'T Eat. │
└────────────────────────────────────┘initcapUTF8
導入バージョン: v23.7.0
initcap と同様に、initcapUTF8 は各単語の先頭文字を大文字に、それ以外の文字を小文字に変換します。
文字列には、有効な UTF-8 でエンコードされたテキストが含まれていることを前提としています。
この前提が満たされない場合でも例外は送出されず、結果は未定義です。
構文
initcapUTF8(s)引数
s— 入力文字列。String
戻り値
各単語の先頭文字を大文字に変換した s を返します。String
例
使用例
SELECT initcapUTF8('не тормозит')┌─initcapUTF8('не тормозит')─┐
│ Не Тормозит │
└────────────────────────────┘isValidASCII
導入バージョン: v25.9.0
入力の String または FixedString が ASCII バイト (0x00–0x7F) のみを含む場合は 1 を返し、それ以外の場合は 0 を返します。入力が有効な ASCII である場合に最適化されています。
構文
isValidASCII(str)別名: isASCII
引数
- なし。
戻り値
例
isValidASCII
SELECT isValidASCII('hello') AS is_ascii, isValidASCII('你好') AS is_not_ascii┌─is_ascii─┬─is_not_ascii─┐
│ 1 │ 0 │
└──────────┴──────────────┘isValidUTF8
導入バージョン: v20.1.0
バイト列が有効な UTF-8 でエンコードされたテキストであるかどうかを確認します。
構文
isValidUTF8(s)引数
s— UTF-8 でエンコードされた文字列として有効かどうかを確認する対象の文字列。String
戻り値
バイト列が有効な UTF-8 でエンコードされたテキストを構成している場合は 1、そうでない場合は 0 を返します。UInt8
例
使用例
SELECT isValidUTF8('\\xc3\\xb1') AS valid, isValidUTF8('\\xc3\\x28') AS invalid┌─valid─┬─invalid─┐
│ 1 │ 1 │
└───────┴─────────┘jaroSimilarity
導入バージョン: v24.1.0
2 つのバイト文字列の Jaro 類似度 を計算します。
構文
jaroSimilarity(s1, s2)引数
戻り値
2 つの文字列間の Jaro 類似度を返します。Float64
例
使用例
SELECT jaroSimilarity('clickhouse', 'click')┌─jaroSimilarity('clickhouse', 'click')─┐
│ 0.8333333333333333 │
└───────────────────────────────────────┘jaroWinklerSimilarity
導入バージョン: v24.1.0
2つのバイト文字列間の Jaro-Winkler similarity を計算します。
構文
jaroWinklerSimilarity(s1, s2)引数
戻り値
2 つの文字列間の Jaro-Winkler 類似度を返します。Float64
例
使用例
SELECT jaroWinklerSimilarity('clickhouse', 'click')┌─jaroWinklerSimilarity('clickhouse', 'click')─┐
│ 0.8999999999999999 │
└──────────────────────────────────────────────┘left
導入バージョン: v22.1.0
文字列 s の左側から数えて、指定した offset 位置から始まる部分文字列を返します。
構文
left(s, offset)引数
s— 部分文字列を取得する元の文字列です。StringまたはFixedStringoffset— オフセットを表すバイト数です。(U)Int*
戻り値
戻り値:
offsetが正の場合、文字列の左側からoffsetバイト分のsの部分文字列を返します。offsetが負の場合、文字列の左側からlength(s) - |offset|バイト分のsの部分文字列を返します。lengthが0の場合は空文字列を返します。String
例
正の offset
SELECT left('Hello World', 5)Hello負のオフセット
SELECT left('Hello World', -6)HelloleftPad
導入バージョン: v21.8.0
結果の文字列が指定したlengthに達するまで、文字列の左側に空白、または指定した文字列 (必要に応じて複数回) を埋め込みます。
構文
leftPad(string, length[, pad_string])別名: lpad
引数
string— パディングする入力文字列です。Stringlength— 結果の文字列の長さです。値が入力文字列の長さより小さい場合、入力文字列はlength文字に切り詰められます。(U)Int*pad_string— 任意。入力文字列のパディングに使用する文字列です。指定しない場合、入力文字列は空白でパディングされます。String
戻り値
指定した長さになるよう左側がパディングされた文字列を返します。 String
例
使用例
SELECT leftPad('abc', 7, '*'), leftPad('def', 7)┌─leftPad('abc', 7, '*')─┬─leftPad('def', 7)─┐
│ ****abc │ def │
└────────────────────────┴───────────────────┘leftPadUTF8
導入バージョン: v21.8.0
UTF-8文字列の左側を、結果の文字列が指定した長さに達するまで、空白または指定した文字列 (必要に応じて複数回) で埋めます。
文字列長をバイト単位で測定する leftPad とは異なり、こちらはコードポイント単位で文字列長を測定します。
構文
leftPadUTF8(string, length[, pad_string])引数
string— パディング対象の入力文字列です。Stringlength— 結果の文字列の長さです。値が入力文字列の長さより小さい場合、入力文字列はlength文字に切り詰められます。(U)Int*pad_string— 省略可能です。入力文字列のパディングに使用する文字列です。指定しない場合、入力文字列は空白でパディングされます。String
戻り値
指定した長さになるよう左側をパディングした文字列を返します。String
例
使用例
SELECT leftPadUTF8('абвг', 7, '*'), leftPadUTF8('дежз', 7)┌─leftPadUTF8('абвг', 7, '*')─┬─leftPadUTF8('дежз', 7)─┐
│ ***абвг │ дежз │
└─────────────────────────────┴────────────────────────┘leftUTF8
導入バージョン: v22.1.0
UTF-8 エンコード文字列 s の左側から、指定した offset の位置から始まる部分文字列を返します。
構文
leftUTF8(s, offset)引数
s— 部分文字列を取得する対象の UTF-8 でエンコードされた文字列。StringまたはFixedStringoffset— オフセットのバイト数。(U)Int*
戻り値
返される値:
offsetが正の場合、文字列の左側からoffsetバイト分のsの部分文字列を返します。\n"offsetが負の場合、文字列の左側からlength(s) - |offset|バイト分のsの部分文字列を返します。\n"lengthが 0 の場合は空文字列を返します。String
例
正のオフセット
SELECT leftUTF8('Привет', 4)Прив負のOFFSET
SELECT leftUTF8('Привет', -4)ПрlengthUTF8
導入バージョン: v1.1.0
文字列の長さを、バイト数や文字数ではなく、Unicode コードポイント数で返します。
文字列の長さをバイト単位で計算するには、length 関数を使用します。
文字列には有効な UTF-8 でエンコードされたテキストが含まれていることを前提としています。
この前提が満たされない場合でも例外はスローされず、結果は未定義です。
構文
lengthUTF8(s)別名: CHARACTER_LENGTH, CHAR_LENGTH
引数
s— 有効な UTF-8 でエンコードされたテキストを含む文字列。String
戻り値
文字列 s の長さ (Unicode コードポイント単位) 。UInt64
例
使用例
SELECT lengthUTF8('Здравствуй, мир!')┌─lengthUTF8('Здравствуй, мир!')─┐
│ 16 │
└────────────────────────────────┘lower
導入バージョン: v1.1.0
ASCII 文字列を小文字に変換します。
構文
lower(s)別名: lcase
引数
s— 小文字に変換する対象の文字列。String
戻り値
s を小文字に変換した文字列を返します。 String
例
使用例
SELECT lower('CLICKHOUSE')┌─lower('CLICKHOUSE')─┐
│ clickhouse │
└─────────────────────┘lowerUTF8
導入バージョン: v1.1.0
文字列に有効な UTF-8 でエンコードされたテキストが含まれていることを前提に、その文字列を小文字に変換します。この前提が満たされない場合でも例外は発生せず、結果は未定義です。
構文
lowerUTF8(input)引数
input— 小文字に変換する入力文字列。String
戻り値
小文字の文字列を返します。String
例
1つ目
SELECT lowerUTF8('München') as Lowerutf8;münchennaturalSortKey
導入バージョン: v26.3.0
この関数は、自然順でソートするために使用されます。
構文
naturalSortKey(s)別名: NATURAL_SORT_KEY
引数
s— ナチュラルソートキーに変換する文字列。String
戻り値
s から生成されたナチュラルソートキー文字列を返します。String
例
使用例
CREATE TABLE t (s String) ENGINE = Memory;
INSERT INTO t VALUES ('a1'), ('a02');
SELECT s FROM t ORDER BY naturalSortKey(s);┌─s───┐
│ a1 │
│ a02 │
└─────┘normalizeUTF8NFC
導入バージョン: v21.11.0
NFC正規化形式に従って、UTF-8文字列を正規化します。
構文
normalizeUTF8NFC(str)引数
str— UTF-8 でエンコードされた入力文字列。String
戻り値
UTF-8 文字列を NFC 形式に正規化した結果を返します。String
例
使用例
SELECT
'é' AS original, -- e + 結合アキュートアクセント (U+0065 + U+0301)
length(original),
normalizeUTF8NFC('é') AS nfc_normalized, -- é (U+00E9)
length(nfc_normalized);┌─original─┬─length(original)─┬─nfc_normalized─┬─length(nfc_normalized)─┐
│ é │ 2 │ é │ 2 │
└──────────┴──────────────────┴────────────────┴────────────────────────┘normalizeUTF8NFD
導入バージョン: v21.11.0
UTF-8文字列を、NFD正規化形式に従って正規化します。
構文
normalizeUTF8NFD(str)引数
str— UTF-8 でエンコードされた入力文字列。String
戻り値
UTF-8 文字列の NFD 正規化後の形式を返します。 String
例
使用例
SELECT
'é' AS original, -- é (U+00E9)
length(original),
normalizeUTF8NFD('é') AS nfd_normalized, -- e + 結合アキュート (U+0065 + U+0301)
length(nfd_normalized);┌─original─┬─length(original)─┬─nfd_normalized─┬─length(nfd_normalized)─┐
│ é │ 2 │ é │ 3 │
└──────────┴──────────────────┴────────────────┴────────────────────────┘normalizeUTF8NFKC
導入バージョン: v21.11.0
UTF-8文字列を NFKC 正規化形式 に従って正規化します。
構文
normalizeUTF8NFKC(str)引数
str— UTF-8 でエンコードされた入力文字列。String
戻り値
UTF-8 文字列を NFKC で正規化した形式を返します。 String
例
使用例
SELECT
'① ② ③' AS original, -- Circled number characters
normalizeUTF8NFKC('① ② ③') AS nfkc_normalized -- Converts to 1 2 3┌─original─┬─nfkc_normalized─┐
│ ① ② ③ │ 1 2 3 │
└──────────┴─────────────────┘normalizeUTF8NFKCCasefold
導入バージョン: v26.3.0
NFKC_Casefold normalization form に従って UTF-8 文字列を正規化します。これは、NFKC 正規化を適用した後にケースフォールディングを行うものです。 識別子の大文字と小文字を区別しないマッチングに役立ちます。
構文
normalizeUTF8NFKCCasefold(str)引数
str— UTF-8 でエンコードされた入力文字列。String
戻り値
UTF-8 文字列の NFKC_Casefold 正規化後の文字列を返します。String
例
使用例
SELECT
'Ä ① Hello' AS original,
normalizeUTF8NFKCCasefold('Ä ① Hello') AS nfkc_cf_normalized;┌─original──┬─nfkc_cf_normalized─┐
│ Ä ① Hello │ ä 1 hello │
└───────────┴────────────────────┘normalizeUTF8NFKD
導入バージョン: v21.11.0
UTF-8文字列を NFKD正規化形式 に従って正規化します。
構文
normalizeUTF8NFKD(str)引数
str— UTF-8 でエンコードされた入力文字列。String
戻り値
UTF-8 文字列を NFKD で正規化した形式を返します。 String
例
使用例
SELECT
'H₂O²' AS original, -- H + subscript 2 + O + superscript 2
normalizeUTF8NFKD('H₂O²') AS nfkd_normalized -- Converts to H 2 O 2┌─original─┬─nfkd_normalized─┐
│ H₂O² │ H2O2 │
└──────────┴─────────────────┘punycodeDecode
導入バージョン: v24.1.0
Punycode でエンコードされた文字列の UTF-8 エンコードされた平文を返します。 有効な Punycode エンコード文字列が指定されていない場合は、例外がスローされます。
構文
punycodeDecode(s)引数
s— Punycode でエンコードされた文字列。String
戻り値
入力値の平文を返します。String
例
使用例
SELECT punycodeDecode('Mnchen-3ya')┌─punycodeDecode('Mnchen-3ya')─┐
│ München │
└──────────────────────────────┘punycodeEncode
導入バージョン: v24.1.0
文字列の Punycode 表現を返します。 文字列は UTF-8 でエンコードされている必要があり、そうでない場合の動作は未定義です。
構文
punycodeEncode(s)引数
s— 入力値。String
戻り値
入力値のPunycode表現を返します。String
使用例
使用例
SELECT punycodeEncode('München')┌─punycodeEncode('München')─┐
│ Mnchen-3ya │
└───────────────────────────┘regexpExtract
導入バージョン: v23.2.0
正規表現パターンに一致し、正規表現のグループ索引に対応する haystack 内の最初の文字列を抽出します。
構文
regexpExtract(haystack, pattern[, index])別名: REGEXP_EXTRACT, REGEXP_SUBSTR
引数
haystack— 正規表現パターンの照合対象となる String。Stringpattern— String、パターン。patternには複数の正規表現グループを含めることができ、indexは抽出する正規表現グループを示します。インデックス 0 は、正規表現全体との一致を意味します。const Stringindex— 省略可能。抽出する正規表現グループを示す 0 以上の整数です。デフォルト値は、patternにキャプチャグループが少なくとも 1 つ含まれている場合は1、キャプチャグループがない場合は0(一致全体) です。(U)Int*
戻り値
一致した文字列を返します。String
例
使用例
SELECT
regexpExtract('100-200', '(\\d+)-(\\d+)', 1),
regexpExtract('100-200', '(\\d+)-(\\d+)', 2),
regexpExtract('100-200', '(\\d+)-(\\d+)', 0),
regexpExtract('100-200', '(\\d+)-(\\d+)'),
regexpExtract('100-200', '\\d+');┌─regexpExtract('100-200', '(\\d+)-(\\d+)', 1)─┬─regexpExtract('100-200', '(\\d+)-(\\d+)', 2)─┬─regexpExtract('100-200', '(\\d+)-(\\d+)', 0)─┬─regexpExtract('100-200', '(\\d+)-(\\d+)')─┬─regexpExtract('100-200', '\\d+')─┐
│ 100 │ 200 │ 100-200 │ 100 │ 100 │
└──────────────────────────────────────────────┴──────────────────────────────────────────────┴──────────────────────────────────────────────┴───────────────────────────────────────────┴──────────────────────────────────┘regexpPosition
導入バージョン: v26.5.0
haystack 内で pattern に一致する occurrence 番目の出現位置を、バイト位置 position から検索して返します (1始まりのバイト位置) 。
return_option が 0 (デフォルト) の場合は、一致の先頭バイト位置を返します。1 の場合は、一致の直後の先頭バイト位置を返します。
subexpression が 0 より大きい場合は、一致全体ではなく、対応するキャプチャグループの位置を返します。
一致が見つからない場合、または要求したキャプチャグループが一致に含まれていない場合は 0 を返します。
PostgreSQL の regexp_instr との互換性のために提供されています (このエイリアスでも公開されています) 。位置はバイト単位で、他の ClickHouse の正規表現関数と同様です。PostgreSQL の regexp_instr は文字単位です。
構文
regexpPosition(haystack, pattern[, position[, occurrence[, return_option[, flags[, subexpression]]]]])別名: regexpInstr, regexp_instr
引数
haystack— 検索対象の文字列。Stringpattern— 正規表現のパターン。const Stringposition— 任意。検索を開始する 1 始まりのバイト位置。デフォルト: 1。(U)Int*occurrence— 任意。何番目の一致を返すかを指定します。デフォルト: 1。(U)Int*return_option— 任意。0 は一致の開始位置を返し、1 は一致直後の位置を返します。デフォルト: 0。(U)Int*flags— 任意。正規表現フラグ。対応:i(大文字と小文字を区別しない) 、c(大文字と小文字を区別する) 、m/n(複数行アンカー) 、s(ドットが改行にも一致) 。デフォルト: 空文字列。const Stringsubexpression— 任意。位置を返すキャプチャグループのインデックス。0 は一致全体を意味します。デフォルト: 0。(U)Int*
戻り値
一致した位置のバイト位置を返します。見つからない場合は 0 を返します。UInt64
例
基本的な使い方
SELECT
regexpPosition('hello world', 'world'),
regexpPosition('aXbXcXd', 'X', 1, 2),
regexpPosition('aXbXcXd', 'X', 1, 2, 1),
regexpPosition('Hello WORLD', 'world', 1, 1, 0, 'i'),
regexpPosition('foo123bar456', '([a-z]+)([0-9]+)', 1, 2, 0, '', 2);┌─regexpPosition('hello world', 'world')─┬─regexpPosition('aXbXcXd', 'X', 1, 2)─┬─regexpPosition('aXbXcXd', 'X', 1, 2, 1)─┬─regexpPosition('Hello WORLD', 'world', 1, 1, 0, 'i')─┬─regexpPosition('foo123bar456', '([a-z]+)([0-9]+)', 1, 2, 0, '', 2)─┐
│ 7 │ 4 │ 5 │ 7 │ 10 │
└────────────────────────────────────────┴──────────────────────────────────────┴─────────────────────────────────────────┴──────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────┘removeDiacriticsUTF8
導入バージョン: v26.3.0
文字を NFD で分解し、結合文字のマーク (Unicode カテゴリ Mn) を除去した後に NFC で再構成することで、UTF-8 文字列からダイアクリティカルマーク (アクセント) を削除します。
構文
removeDiacriticsUTF8(str)別名: removeAccentsUTF8
引数
str— UTF-8 でエンコードされた入力文字列。String
戻り値
発音区別符号が削除された UTF-8 文字列。 String
例
基本的なアクセントの削除
SELECT removeDiacriticsUTF8('café résumé naïve')┌─removeDiacriticsUTF8('café résumé naïve')─┐
│ cafe resume naive │
└───────────────────────────────────────────┘repeat
導入バージョン: v20.1.0
指定した回数だけ文字列を繰り返し連結します。
構文
repeat(s, n)引数
戻り値
文字列 s を n 回繰り返した文字列です。n が負の場合、関数は空文字列を返します。String
例
使用例
SELECT repeat('abc', 10)┌─repeat('abc', 10)──────────────┐
│ abcabcabcabcabcabcabcabcabcabc │
└────────────────────────────────┘reverseUTF8
導入バージョン: v1.1.0
文字列中の Unicode コードポイント列を逆順にします。 文字列には有効な UTF-8 でエンコードされたテキストが含まれていることを前提としています。 この前提が満たされていない場合でも例外はスローされず、結果は未定義です。
構文
reverseUTF8(s)引数
s— 有効な UTF-8 でエンコードされたテキストを含む String。String
戻り値
Unicode コードポイントの並びを逆順にした文字列。String
例
使用例
SELECT reverseUTF8('ClickHouse')esuoHkcilCright
導入バージョン: v22.1.0
文字列 s の右側から指定した offset を開始位置として、部分文字列を返します。
構文
right(s, offset)引数
s— 部分文字列を取得する元の文字列。StringまたはFixedStringoffset— オフセットのバイト数。(U)Int*
戻り値
以下を返します。
offsetが正の場合、文字列の右側からoffsetバイト分のsの部分文字列。offsetが負の場合、文字列の右側からlength(s) - |offset|バイト分のsの部分文字列。lengthが0の場合は空文字列。String
例
正のオフセット
SELECT right('Hello', 3)llo負のオフセット
SELECT right('Hello', -3)lorightPad
導入バージョン: v21.8.0
結果の文字列が指定したlengthに達するまで、文字列の右側を空白、または指定した文字列 (必要に応じて複数回) で埋めます。
構文
rightPad(string, length[, pad_string])別名: rpad
引数
string— パディングする入力文字列です。Stringlength— 結果の文字列の長さです。値が入力文字列の長さより小さい場合、入力文字列はlength文字に切り詰められます。(U)Int*pad_string— 省略可能です。入力文字列の右側を埋めるための文字列です。指定しない場合、入力文字列は空白で埋められます。String
戻り値
指定した長さになるよう右側が埋められた文字列を返します。 String
例
使用例
SELECT rightPad('abc', 7, '*'), rightPad('abc', 7)┌─rightPad('abc', 7, '*')─┬─rightPad('abc', 7)─┐
│ abc**** │ abc │
└─────────────────────────┴────────────────────┘rightPadUTF8
導入バージョン: v21.8.0
結果の文字列が指定した長さに達するまで、文字列の右側を空白または指定した文字列で (必要に応じて複数回) 埋めます。
文字列の長さをバイト単位で測定する rightPad とは異なり、この関数では文字列の長さはコードポイント単位で測定されます。
構文
rightPadUTF8(string, length[, pad_string])引数
string— パディングする対象の入力文字列です。Stringlength— 生成される文字列の長さです。値が入力文字列の長さより小さい場合、入力文字列はlength文字に切り詰められます。(U)Int*pad_string— 任意。入力文字列を埋めるために使用する文字列です。指定しない場合、入力文字列は空白で埋められます。String
戻り値
指定した長さになるよう右側が埋められた文字列を返します。String
例
使用例
SELECT rightPadUTF8('абвг', 7, '*'), rightPadUTF8('абвг', 7)┌─rightPadUTF8('абвг', 7, '*')─┬─rightPadUTF8('абвг', 7)─┐
│ абвг*** │ абвг │
└──────────────────────────────┴─────────────────────────┘rightUTF8
導入バージョン: v22.1.0
UTF-8 でエンコードされた文字列 s について、右側から指定した offset を開始位置とする部分文字列を返します。
構文
rightUTF8(s, offset)引数
s— 部分文字列を取得する対象の UTF-8 でエンコードされた文字列。StringまたはFixedStringoffset— オフセットのバイト数。(U)Int*
戻り値
返される値:
offsetが正の場合、文字列の右側からoffsetバイト分のsの部分文字列を返します。offsetが負の場合、文字列の右側からlength(s) - |offset|バイト分のsの部分文字列を返します。lengthが0の場合は空文字列を返します。String
例
正の offset
SELECT rightUTF8('Привет', 4)ивет負の OFFSET
SELECT rightUTF8('Привет', -4)етsoundex
導入バージョン: v23.4.0
文字列の Soundexコード を返します。
構文
soundex(s)引数
s— 入力文字列です。String
戻り値
入力文字列の Soundex コードを返します。String
例
使用例
SELECT soundex('aksel')┌─soundex('aksel')─┐
│ A240 │
└──────────────────┘space
導入バージョン: v23.5.0
指定した回数だけ、スペース文字 ( ) を連結します。
構文
space(n)引数
n— 空白を繰り返す回数。(U)Int*
戻り値
空白を n 回繰り返した文字列を返します。n <= 0 の場合、関数は空文字列を返します。String
例
使用例
SELECT space(3) AS res, length(res);┌─res─┬─length(res)─┐
│ │ 3 │
└─────┴─────────────┘sparseGrams
導入バージョン: v25.5.0
指定された文字列について、長さが少なくとも n のすべての部分文字列を見つけます。
このとき、部分文字列の両端にある (n-1)-gram のハッシュは、
その部分文字列内の任意の (n-1)-gram のハッシュよりも厳密に大きくなります。
ハッシュ関数として CRC32 を使用します。
構文
sparseGrams(s[, min_ngram_length[, max_ngram_length[, min_cutoff_length]]])引数
s— 入力文字列。Stringmin_ngram_length— 任意。抽出する N-gram の最小長です。デフォルト値および最小値は 3 です。UInt*max_ngram_length— 任意。抽出する N-gram の最大長です。デフォルト値は 100 です。min_ngram_length以上である必要があります。UInt*min_cutoff_length— 任意。指定した場合、長さがmin_cutoff_length以上の N-gram のみを返します。デフォルト値はmin_ngram_lengthと同じです。min_ngram_length以上かつmax_ngram_length以下である必要があります。UInt*
戻り値
選択された部分文字列の配列を返します。Array(String)
例
使用例
SELECT sparseGrams('alice', 3)┌─sparseGrams('alice', 3)────┐
│ ['ali','lic','ice','lice'] │
└────────────────────────────┘sparseGramsHashes
導入バージョン: v25.5.0
指定した文字列について、長さが n 以上のすべての部分文字列のハッシュを求めます。
このとき、各部分文字列の両端にある (n-1)-gram のハッシュは、
その部分文字列内にある他のどの (n-1)-gram のハッシュよりも厳密に大きくなります。
ハッシュ関数には CRC32 を使用します。
構文
sparseGramsHashes(s[, min_ngram_length, max_ngram_length])引数
s— 入力文字列。Stringmin_ngram_length— 任意。抽出する N-gram の最小長です。デフォルト値および最小値は 3 です。UInt*max_ngram_length— 任意。抽出する N-gram の最大長です。デフォルト値は 100 です。min_ngram_length以上である必要があります。UInt*min_cutoff_length— 任意。指定した場合、長さがmin_cutoff_length以上の N-gram のみを返します。デフォルト値はmin_ngram_lengthと同じです。min_ngram_length以上かつmax_ngram_length以下である必要があります。UInt*
戻り値
選択された部分文字列の CRC32 ハッシュからなる配列を返します。Array(UInt32)
例
使用例
SELECT sparseGramsHashes('alice', 3)┌─sparseGramsHashes('alice', 3)────────────────┐
│ [3851133533,3120039944,646693941,2577359366] │
└──────────────────────────────────────────────┘sparseGramsHashesUTF8
導入バージョン: v25.5.0
指定した UTF-8文字列について、長さが少なくとも n で、かつその部分文字列の両端にある (n-1)-gram のハッシュが、部分文字列内のどの (n-1)-gram のハッシュよりも厳密に大きい、すべての部分文字列のハッシュを返します。
UTF-8文字列を受け取り、UTF-8 シーケンスが無効な場合は例外をスローします。
ハッシュ関数として CRC32 を使用します。
構文
sparseGramsHashesUTF8(s[, min_ngram_length, max_ngram_length])引数
s— 入力文字列です。Stringmin_ngram_length— 任意。抽出される N-gram の最小長です。デフォルト値および最小値は 3 です。UInt*max_ngram_length— 任意。抽出される N-gram の最大長です。デフォルト値は 100 です。min_ngram_length以上である必要があります。UInt*min_cutoff_length— 任意。指定した場合、長さがmin_cutoff_length以上の N-gram のみが返されます。デフォルト値はmin_ngram_lengthと同じです。min_ngram_length以上、max_ngram_length以下である必要があります。UInt*
戻り値
選択された UTF-8 の部分文字列の CRC32 ハッシュからなる配列を返します。Array(UInt32)
例
使用例
SELECT sparseGramsHashesUTF8('алиса', 3)┌─sparseGramsHashesUTF8('алиса', 3)───────────────────────┐
│ [1328958118,547287748,4155892324,2403052185,1673399070] │
└─────────────────────────────────────────────────────────┘sparseGramsUTF8
導入バージョン: v25.5.0
指定された UTF-8 文字列について、長さが少なくとも n であり、部分文字列の両端にある (n-1)-gram のハッシュが、その部分文字列内のどの (n-1)-gram のハッシュよりも厳密に大きい、すべての部分文字列を見つけます。
UTF-8 文字列を受け取り、UTF-8 シーケンスが無効な場合は例外をスローします。
ハッシュ関数として CRC32 を使用します。
構文
sparseGramsUTF8(s[, min_ngram_length[, max_ngram_length[, min_cutoff_length]]])引数
s— 入力文字列です。Stringmin_ngram_length— 任意。抽出するN-gramの最小長です。デフォルト値および最小値は 3 です。UInt*max_ngram_length— 任意。抽出するN-gramの最大長です。デフォルト値は 100 です。min_ngram_length以上である必要があります。UInt*min_cutoff_length— 任意。指定した場合、長さがmin_cutoff_length以上の N-gram のみを返します。デフォルト値はmin_ngram_lengthと同じです。min_ngram_length以上、max_ngram_length以下である必要があります。UInt*
戻り値
選択された UTF-8 部分文字列の配列を返します。Array(String)
例
使用例
SELECT sparseGramsUTF8('алиса', 3)┌─sparseGramsUTF8('алиса', 3)────────┐
│ ['али','лис','иса','лиса','алиса'] │
└────────────────────────────────────┘startsWith
導入バージョン: v1.1.0
文字列が指定した文字列で始まるかどうかを判定します。
構文
startsWith(s, prefix)引数
戻り値
s が prefix で始まる場合は 1、そうでない場合は 0 を返します。UInt8
例
使用例
SELECT startsWith('ClickHouse', 'Click');┌─startsWith('ClickHouse', 'Click')─┐
│ 1 │
└───────────────────────────────────┘startsWithCaseInsensitive
導入バージョン: v25.10.0
文字列が、指定された大文字と小文字を区別しない文字列で始まるかどうかを判定します。
構文
startsWithCaseInsensitive(s, prefix)引数
戻り値
s が大文字と小文字を区別しない prefix で始まる場合は 1、それ以外の場合は 0 を返します。UInt8
例
使用例
SELECT startsWithCaseInsensitive('ClickHouse', 'CLICK');┌─startsWithCaseInsensitive('ClickHouse', 'CLICK')─┐
│ 1 │
└──────────────────────────────────────────────────┘startsWithCaseInsensitiveUTF8
導入バージョン: v25.10.0
文字列が、指定された大文字と小文字を区別しないプレフィックスで始まるかどうかを判定します。 文字列は、有効な UTF-8 でエンコードされたテキストであることを前提とします。 この前提が満たされない場合でも、例外は発生せず、結果は未定義となります。
構文
startsWithCaseInsensitiveUTF8(s, prefix)引数
戻り値
s が大文字と小文字を区別しない prefix で始まる場合は 1、それ以外の場合は 0 を返します。UInt8
例
使用例
SELECT startsWithCaseInsensitiveUTF8('приставка', 'при')┌─startsWithCaseInsensitiveUTF8('приставка', 'при')─┐
│ 1 │
└───────────────────────────────────────────────────┘startsWithUTF8
導入バージョン: v23.8.0
文字列が指定されたプレフィックスで始まるかどうかを確認します。 文字列には、有効な UTF-8 でエンコードされたテキストが含まれていることを前提としています。 この前提が満たされない場合でも、例外はスローされず、結果は未定義です。
構文
startsWithUTF8(s, prefix)引数
戻り値
s が prefix で始まる場合は 1、そうでない場合は 0 を返します。 UInt8
例
使用例
SELECT startsWithUTF8('приставка', 'при')┌─startsWithUTF8('приставка', 'при')─┐
│ 1 │
└────────────────────────────────────┘stringBytesEntropy
導入バージョン: v25.6.0
文字列内のバイト分布のシャノンエントロピーを計算します。
構文
stringBytesEntropy(s)引数
s— 解析対象の文字列。String
戻り値
文字列内のバイト分布のシャノンエントロピーを返します。Float64
例
使用例
SELECT stringBytesEntropy('Hello, world!')┌─stringBytesEntropy('Hello, world!')─┐
│ 3.180832987205441 │
└─────────────────────────────────────┘stringBytesUniq
導入バージョン: v25.6.0
文字列に含まれる異なるバイトの数をカウントします。
構文
stringBytesUniq(s)引数
s— 解析する文字列。String
戻り値
文字列内の異なるバイトの数を返します。UInt16
例
使用例
SELECT stringBytesUniq('Hello')┌─stringBytesUniq('Hello')─┐
│ 4 │
└──────────────────────────┘stringJaccardIndex
導入バージョン: v23.11.0
2つのバイト列間のジャッカード類似度指数を計算します。
構文
stringJaccardIndex(s1, s2)引数
戻り値
2つの文字列のジャッカード類似度指数を返します。Float64
例
使用例
SELECT stringJaccardIndex('clickhouse', 'mouse')┌─stringJaccardIndex('clickhouse', 'mouse')─┐
│ 0.4 │
└───────────────────────────────────────────┘stringJaccardIndexUTF8
導入バージョン: v23.11.0
UTF-8 でエンコードされた文字列に対する stringJaccardIndex と同様の関数です。
構文
stringJaccardIndexUTF8(s1, s2)引数
戻り値
2つのUTF-8文字列のジャッカード類似度指数を返します。 Float64
例
使用例
SELECT stringJaccardIndexUTF8('我爱你', '我也爱你') AS jaccard_index┌─jaccard_index─┐
│ 0.75 │
└───────────────┘substring
導入バージョン: v1.1.0
指定したバイト位置 offset から始まる、文字列 s の部分文字列を返します。
バイト位置は、以下のルールに従って 1 から数えます。
offsetが0の場合は、空文字列が返されます。offsetが負の場合、部分文字列は先頭からではなく、文字列の末尾からoffset文字分さかのぼった位置から始まります。
省略可能な引数 length では、返される部分文字列の最大バイト数を指定します。
数値の各桁に対して同様の操作を行う digits 関数も参照してください。
構文
substring(s, offset[, length])別名: byteSlice, mid, substr
引数
s— 部分文字列を抽出する元の文字列。StringまたはFixedStringまたはEnumoffset—s内での部分文字列の開始位置。(U)Int*length— 省略可能。部分文字列の最大長。(U)Int*
戻り値
offset から始まる、長さ length バイトの s の部分文字列を返します。String
例
基本的な使い方
SELECT 'database' AS db, substr(db, 5), substr(db, 5, 1)┌─db───────┬─substr(db, 5)─┬─substr(db, 5, 1)─┐
│ database │ base │ b │
└──────────┴───────────────┴──────────────────┘substringIndex
導入バージョン: v23.7.0
Spark や MySQL と同様に、区切り文字 delim が count 回現れる位置より前にある s の部分文字列を返します。
構文
substringIndex(s, delim, count)別名: SUBSTRING_INDEX
引数
s— 部分文字列を抽出する対象の文字列です。Stringdelim— 分割に使用する区切り文字です。Stringcount— 部分文字列を抽出する前に数える区切り文字の出現回数です。countが正の場合は、最後の区切り文字 (左から数えた場合) より左側のすべてが返されます。countが負の場合は、最後の区切り文字 (右から数えた場合) より右側のすべてが返されます。UIntまたはInt
戻り値
s のうち、delim が count 回出現する位置より前の部分文字列を返します。 String
例
使用例
SELECT substringIndex('www.clickhouse.com', '.', 2)┌─substringIndex('www.clickhouse.com', '.', 2)─┐
│ www.clickhouse │
└──────────────────────────────────────────────┘substringIndexUTF8
導入バージョン: v23.7.0
Unicode コードポイント単位で、区切り文字 delim が count 回出現する位置より前にある s の部分文字列を返します。
文字列には有効な UTF-8 でエンコードされたテキストが含まれていることを前提とします。
この前提が満たされない場合でも、例外はスローされず、結果は未定義です。
構文
substringIndexUTF8(s, delim, count)引数
s— 部分文字列を抽出する対象の文字列です。Stringdelim— 分割に使用する文字です。Stringcount— 部分文字列を抽出する前に数える区切り文字の出現回数です。countが正の場合は、最後の区切り文字 (左から数える) より左側のすべてが返されます。countが負の場合は、最後の区切り文字 (右から数える) より右側のすべてが返されます。UIntまたはInt
戻り値
delim が count 回出現する位置より前の s の部分文字列を返します。String
例
UTF8 の例
SELECT substringIndexUTF8('www.straßen-in-europa.de', '.', 2)www.straßen-in-europasubstringUTF8
導入バージョン: v1.1.0
指定されたコードポイントのインデックス offset から始まる文字列 s の部分文字列を返します。
コードポイントのカウントは、次のルールに従って 1 から始まります。
offsetが0の場合は、空文字列が返されます。offsetが負の値の場合、部分文字列は文字列の先頭ではなく、末尾からoffsetコードポイント分の位置から始まります。
省略可能な引数 length は、返される部分文字列に含められるコードポイント数の最大値を指定します。
構文
substringUTF8(s, offset[, length])引数
s— 部分文字列を取得する元の文字列です。StringまたはFixedStringまたはEnumoffset—s内での部分文字列の開始位置です。IntまたはUIntlength— 部分文字列の最大長です。省略可能です。IntまたはUInt
戻り値
コードポイント位置 offset から始まる、length 個のコードポイントからなる s の部分文字列を返します。String
例
使用例
SELECT 'Täglich grüßt das Murmeltier.' AS str, substringUTF8(str, 9), substringUTF8(str, 9, 5)Täglich grüßt das Murmeltier. grüßt das Murmeltier. grüßttoValidUTF8
導入バージョン: v20.1.0
UTF-8 として不正な文字を置換文字 � (U+FFFD) に置き換え、文字列を有効な UTF-8 エンコーディングに変換します。
不正な文字が複数連続している場合は、1 つの置換文字にまとめられます。
構文
toValidUTF8(s)引数
s—Stringデータ型のオブジェクトとして表される任意のバイト列。String
戻り値
有効な UTF-8 文字列を返します。String
例
使用例
SELECT toValidUTF8('\\x61\\xF0\\x80\\x80\\x80b')\\x61\\xF0\\x80\\x80\\x80btrimBoth
導入バージョン: v20.1.0
文字列の先頭と末尾から、指定した文字を取り除きます。 デフォルトでは、一般的な空白文字 (ASCII) を取り除きます。
Syntax
trimBoth(s[, trim_characters])別名: trim
引数
戻り値
指定した文字を両端からトリムした文字列を返します。String
例
使用例
SELECT trimBoth('$$ClickHouse$$', '$')┌─trimBoth('$$ClickHouse$$', '$')─┐
│ ClickHouse │
└─────────────────────────────────┘trimLeft
導入バージョン: v20.1.0
文字列の先頭から、指定した文字を取り除きます。 デフォルトでは、一般的な空白文字 (ASCII) を取り除きます。
構文
trimLeft(input[, trim_characters])別名: ltrim
引数
戻り値
左側から指定した文字がトリムされた文字列を返します。 String
例
使用例
SELECT trimLeft('ClickHouse', 'Click');┌─trimLeft('ClickHouse', 'Click')─┐
│ House │
└─────────────────────────────────┘trimRight
導入バージョン: v20.1.0
文字列の末尾から指定した文字を取り除きます。 デフォルトでは、一般的な空白文字 (ASCII) を取り除きます。
構文
trimRight(s[, trim_characters])別名: rtrim
引数
戻り値
右側から指定した文字をトリムした文字列を返します。 String
例
使用例
SELECT trimRight('ClickHouse','House');┌─trimRight('ClickHouse', 'House')─┐
│ Click │
└──────────────────────────────────┘tryBase32Decode
導入バージョン: v25.6.0
文字列を受け取り、Base32エンコード方式を使用してデコードします。
構文
tryBase32Decode(encoded)引数
encoded— デコード対象のString型のカラムまたは定数。文字列が有効な Base32 エンコードでない場合は、エラー時に空文字列を返します。String
戻り値
引数をデコードした値を含む文字列を返します。 String
例
使用例
SELECT tryBase32Decode('IVXGG33EMVSA====');┌─tryBase32Decode('IVXGG33EMVSA====')─┐
│ Encoded │
└─────────────────────────────────────┘tryBase58Decode
導入バージョン: v22.10.0
base58Decode と同様ですが、エラーが発生した場合は空文字列を返します。
構文
tryBase58Decode(encoded[, expected_size])引数
encoded— String型のカラムまたは定数。文字列が有効なBase58エンコードでない場合、エラー時には空文字列を返します。Stringexpected_size— 任意。デコード後の想定サイズ (バイト単位) 。32 または 64 の場合は最適化されたデコーダーが使用され、それ以外の値では汎用デコーダーが使用されます。UInt8, UInt16, UInt32, or UInt64
戻り値
引数のデコードされた値を含む文字列を返します。String
例
使用例
SELECT tryBase58Decode('3dc8KtHrwM') AS res, tryBase58Decode('invalid') AS res_invalid;┌─res─────┬─res_invalid─┐
│ Encoded │ │
└─────────┴─────────────┘tryBase64Decode
導入バージョン: v18.16.0
base64Decode と同様ですが、エラーが発生した場合は空文字列を返します。
構文
tryBase64Decode(encoded)引数
encoded— デコードするString型のカラムまたは定数。文字列が有効な Base64 エンコードでない場合、エラー時には空文字列を返します。String
戻り値
引数をデコードした値を含む文字列を返します。String
例
使用例
SELECT tryBase64Decode('Y2xpY2tob3VzZQ==')┌─tryBase64Decode('Y2xpY2tob3VzZQ==')─┐
│ clickhouse │
└─────────────────────────────────────┘tryBase64URLDecode
導入バージョン: v18.16.0
base64URLDecode と同様ですが、エラーが発生した場合は空文字列を返します。
構文
tryBase64URLDecode(encoded)引数
encoded— デコードするString型のカラムまたは定数。文字列が有効な Base64 エンコードでない場合、エラー時には空文字列を返します。String
戻り値
引数をデコードした値を含む文字列を返します。String
例
使用例
SELECT tryBase64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ')┌─tryBase64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ')─┐
│ https://clickhouse.com │
└──────────────────────────────────────────────────────┘tryIdnaEncode
導入バージョン: v24.1.0
Internationalized Domain Names in Applications (IDNA) の仕組みに従い、ドメイン名の Unicode (UTF-8) 表現 (ToUnicode アルゴリズム) を返します。 エラーが発生した場合は、例外をスローする代わりに空文字列を返します。
構文
tryIdnaEncode(s)引数
s— 入力文字列。String
戻り値
入力値のIDNAメカニズムに従って、入力文字列のASCII表現を返します。入力が無効な場合は空文字列を返します。String
例
使用例
SELECT tryIdnaEncode('straße.münchen.de')┌─tryIdnaEncode('straße.münchen.de')─┐
│ xn--strae-oqa.xn--mnchen-3ya.de │
└────────────────────────────────────┘tryPunycodeDecode
導入バージョン: v24.1.0
punycodeDecode と同様ですが、有効な Punycode でエンコードされた文字列が指定されていない場合は空文字列を返します。
構文
tryPunycodeDecode(s)引数
s— Punycode でエンコードされた文字列。String
戻り値
入力値の平文を返します。入力が無効な場合は空文字列を返します。String
例
使用例
SELECT tryPunycodeDecode('Mnchen-3ya')┌─tryPunycodeDecode('Mnchen-3ya')─┐
│ München │
└─────────────────────────────────┘upper
導入バージョン: v1.1.0
文字列内の ASCII のラテン文字を大文字に変換します。
構文
upper(s)別名: ucase
引数
s— 大文字に変換する対象の文字列。String
戻り値
s を大文字に変換した文字列を返します。 String
例
使用例
SELECT upper('clickhouse')┌─upper('clickhouse')─┐
│ CLICKHOUSE │
└─────────────────────┘upperUTF8
導入バージョン: v1.1.0
文字列が有効な UTF-8 でエンコードされたテキストを含むものと仮定して、その文字列を大文字に変換します。 この前提が満たされない場合でも例外はスローされず、結果は未定義です。
構文
upperUTF8(s)引数
s— String型。String
戻り値
String データ型の値。String
例
使用例
SELECT upperUTF8('München') AS Upperutf8┌─Upperutf8─┐
│ MÜNCHEN │
└───────────┘