文字列の検索および文字列の置換を行う関数については、別途説明しています。
以下のドキュメントは、system.functions システムテーブルから生成されています。
導入バージョン: v20.1.0
CRC-32-IEEE 802.3 多項式と初期値 0xffffffff (zlib 実装) を使用して、文字列の CRC32 チェックサムを計算します。
構文
引数
戻り値
文字列の CRC32 チェックサムを返します。UInt32
例
使用例
SELECT CRC32('ClickHouse')
┌─CRC32('ClickHouse')─┐
│ 1538217360 │
└─────────────────────┘
導入バージョン: v20.1.0
CRC-32-IEEE 802.3多項式を使用して、文字列のCRC32チェックサムを計算します。
構文
引数
s — CRC32 を計算する対象の文字列です。String
戻り値
文字列の CRC32 チェックサムを返します。UInt32
例
使用例
SELECT CRC32IEEE('ClickHouse');
┌─CRC32IEEE('ClickHouse')─┐
│ 3089448422 │
└─────────────────────────┘
導入バージョン: v20.1.0
CRC-64-ECMA多項式を用いて、文字列のCRC64チェックサムを計算します。
構文
引数
戻り値
文字列の 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', '/');
┌─appendTraili⋯.com', '/')─┐
│ https://example.com/ │
└──────────────────────────┘
導入バージョン: v22.11.0
文字列 s の最初の文字の ASCII コードポイントを Int32 として返します。
構文
引数
戻り値
最初の文字の ASCII コードポイントを返します。s が空の場合、結果は 0 です。最初の文字が ASCII 文字でない場合、または UTF-16 の Latin-1 Supplement 範囲に含まれない場合、結果は未定義です。Int32
例
使用例
┌─ascii('234')─┐
│ 50 │
└──────────────┘
導入バージョン: v25.6.0
Base32 (RFC 4648) 文字列をデコードします。
文字列が有効な Base32 エンコードでない場合は、例外がスローされます。
構文
引数
encoded — String 型のカラムまたは定数。String
戻り値
引数をデコードした値を含む文字列を返します。String
例
使用例
SELECT base32Decode('IVXGG33EMVSA====');
┌─base32Decode('IVXGG33EMVSA====')─┐
│ Encoded │
└──────────────────────────────────┘
導入バージョン: v25.6.0
文字列を Base32 でエンコードします。
構文
引数
戻り値
引数をエンコードした値を含む文字列を返します。String または FixedString
例
使用例
SELECT base32Encode('Encoded')
┌─base32Encode('Encoded')─┐
│ IVXGG33EMVSA==== │
└─────────────────────────┘
導入バージョン: v22.7.0
Base58 文字列をデコードします。
文字列が有効な Base58 エンコードでない場合は、例外が発生します。
最適化された固定サイズのデコーダーを選択するために、省略可能な第2引数 expected_size を指定できます。
現在サポートされている値は 32 と 64 です。それ以外の値では、汎用デコーダーが使用されます。
最適化デコーダーが選択されていても、入力をそのバイト数ちょうどにデコードできない場合、
関数は例外を発生させます (tryBase58Decode の場合は空文字列を返します) 。
構文
base58Decode(encoded[, expected_size])
引数
戻り値
引数をデコードした値を含む文字列を返します。String
例
使用例
SELECT base58Decode('JxF12TrwUP45BMd');
┌─base58Decode⋯rwUP45BMd')─┐
│ Hello World │
└──────────────────────────┘
導入バージョン: v22.7.0
文字列を Base58 形式でエンコードします。
構文
引数
戻り値
引数をエンコードした値を含む文字列を返します。String
例
使用例
SELECT base58Encode('ClickHouse');
┌─base58Encode('ClickHouse')─┐
│ 4nhk8K7GHXf6zx │
└────────────────────────────┘
導入バージョン: v18.16.0
RFC 4648 に従い、Base64 表現から文字列をデコードします。
エラー時には例外をスローします。
構文
別名: FROM_BASE64
引数
encoded — デコードする String 型のカラムまたは定数。文字列が有効な Base64 形式でエンコードされていない場合は、例外がスローされます。String
戻り値
デコードされた文字列を返します。String
例
使用例
SELECT base64Decode('Y2xpY2tob3VzZQ==')
┌─base64Decode('Y2xpY2tob3VzZQ==')─┐
│ clickhouse │
└──────────────────────────────────┘
導入バージョン: v18.16.0
RFC 4648 に従って、文字列を Base64 形式にエンコードします。
構文
別名: TO_BASE64
引数
plaintext — デコードする平文のカラムまたは定数。String
戻り値
引数をエンコードした値を含む文字列を返します。String
例
使用例
SELECT base64Encode('clickhouse')
┌─base64Encode('clickhouse')─┐
│ Y2xpY2tob3VzZQ== │
└────────────────────────────┘
導入バージョン: v24.6.0
RFC 4648 に従い、URL セーフなアルファベットを使用した Base64 表現から文字列をデコードします。
エラー時には例外をスローします。
構文
引数
encoded — エンコード対象の String 型のカラムまたは定数。文字列が有効な Base64 エンコード形式でない場合は、例外がスローされます。String
戻り値
引数をデコードした値を含む文字列を返します。String
例
使用例
SELECT base64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ')
┌─base64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ')─┐
│ https://clickhouse.com │
└───────────────────────────────────────────────────┘
導入バージョン: v18.16.0
URLセーフなアルファベットを使用して、文字列を Base64 (RFC 4648) 形式でエンコードします。
構文
base64URLEncode(plaintext)
引数
plaintext — エンコードする平文のカラムまたは定数。String
戻り値
引数をエンコードした値を含む文字列を返します。String
例
使用例
SELECT base64URLEncode('https://clickhouse.com')
┌─base64URLEncode('https://clickhouse.com')─┐
│ aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ │
└───────────────────────────────────────────┘
導入バージョン: v20.1.0
文字列の最後のスラッシュまたはバックスラッシュの後にある末尾部分を抽出します。
この関数は、パスからファイル名を抽出するためによく使用されます。
構文
引数
expr — 文字列式です。バックスラッシュはエスケープする必要があります。 String
戻り値
入力文字列のうち、最後のスラッシュまたはバックスラッシュより後ろの部分を返します。入力文字列がスラッシュまたはバックスラッシュで終わる場合、この関数は空文字列を返します。スラッシュまたはバックスラッシュが含まれていない場合は、元の文字列を返します。 String
例
Unix パスからファイル名を抽出
SELECT 'some/long/path/to/file' AS a, basename(a)
┌─a──────────────────────┬─basename('some/long/path/to/file')─┐
│ some/long/path/to/file │ file │
└────────────────────────┴────────────────────────────────────┘
Windows パスからファイル名を抽出
SELECT 'some\\long\\path\\to\\file' AS a, basename(a)
┌─a──────────────────────┬─basename('some\\long\\path\\to\\file')─┐
│ some\long\path\to\file │ file │
└────────────────────────┴────────────────────────────────────────┘
パス区切り文字のない文字列
SELECT 'some-file-name' AS a, basename(a)
┌─a──────────────┬─basename('some-file-name')─┐
│ some-file-name │ some-file-name │
└────────────────┴────────────────────────────┘
導入バージョン: v23.9.0
2つのバイト文字列間のハミング距離を計算します。
構文
byteHammingDistance(s1, s2)
別名: mismatches
引数
戻り値
2 つの文字列のハミング距離を返します。UInt64
例
使用例
SELECT byteHammingDistance('karolin', 'kathrin')
┌─byteHammingDistance('karolin', 'kathrin')─┐
│ 3 │
└───────────────────────────────────────────┘
導入バージョン: v26.3.0
UTF-8文字列に Unicode のケースフォールディングを適用し、大文字と小文字を区別しない比較に適した、小文字化に近い正規化済みの形式に変換します。
標準の Unicode ケースフォールディングを適用します。ケースフォールディングの影響を受けない互換文字
(例: ローマ数字、丸付き数字) は保持されますが、ffi のような一部の合字は、Unicode のケースフォールディング自体によって展開されるため、引き続き分解される点に注意してください。
構文
引数
str — UTF-8 でエンコードされた入力文字列。String
戻り値
ケースフォールディングされた UTF-8 文字列。String
例
基本的なケースフォールディング
SELECT caseFoldUTF8('Straße')
┌─caseFoldUTF8('Straße')─┐
│ strasse │
└─────────────────────────┘
導入バージョン: v25.2.0
2つの文字列を辞書式順序で比較します。
構文
compareSubstrings(s1, s2, s1_offset, s2_offset, num_bytes)
引数
s1 — 比較対象の1つ目の文字列です。String
s2 — 比較対象の2つ目の文字列です。String
s1_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 │
└────────┘
導入バージョン: v1.1.0
指定された引数を連結します。
String または FixedString 型以外の引数は、デフォルトのシリアライゼーションを使用して文字列に変換されます。
ただし、これによりパフォーマンスが低下するため、String/FixedString 以外の引数の使用は推奨されません。
構文
引数
s1, s2, ... — 任意の型の値を任意の数だけ指定できます。Any
戻り値
引数を連結して生成された文字列を返します。引数のいずれかが NULL の場合、この関数は NULL を返します。引数がない場合は、空文字列を返します。Nullable(String)
例
文字列の連結
SELECT concat('Hello, ', 'World!')
┌─concat('Hello, ', 'World!')─┐
│ Hello, World! │
└─────────────────────────────┘
数値の結合
┌─concat(42, 144)─┐
│ 42144 │
└─────────────────┘
導入バージョン: v1.1.0
concat と似ていますが、concat(s1, s2, ...) → sn が単射、
つまり引数が異なれば結果も異なると仮定します。
GROUP BY の最適化に利用できます。
構文
concatAssumeInjective([s1, s2, ...])
引数
戻り値
引数を連結して作成された文字列を返します。いずれかの引数の値が NULL の場合、この関数は NULL を返します。引数が渡されない場合は、空文字列を返します。String
例
GROUP BYの最適化
SELECT concat(key1, key2), sum(value) FROM key_val GROUP BY concatAssumeInjective(key1, key2)
┌─concat(key1, key2)─┬─sum(value)─┐
│ Hello, World! │ 3 │
│ Hello, World! │ 2 │
│ Hello, World │ 3 │
└────────────────────┴────────────┘
導入バージョン: v22.12.0
指定した区切り文字を挟んで、与えられた文字列を連結します。
構文
concatWithSeparator(sep[, exp1, exp2, ...])
別名: concat_ws
引数
sep — 使用する区切り文字。const String または const FixedString
exp1, 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, ... ])
引数
戻り値
引数を連結して作成された 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 │
└─────────────┴─────────────┘
導入バージョン: 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進数に変換
16進数を10進数に変換
SELECT conv('FF', 16, 10)
負の数への変換
SELECT conv('-1', 10, 16)
2進数を8進数に変換する
SELECT conv('1010', 2, 8)
導入バージョン: v1.1.0
文字列 s を、エンコーディング from からエンコーディング to に変換して返します。
構文
convertCharset(s, from, to)
引数
戻り値
エンコーディング from から to に変換された文字列 s を返します。String
例
使用例
SELECT convertCharset('Café', 'UTF-8', 'ISO-8859-1');
┌─convertChars⋯SO-8859-1')─┐
│ Caf� │
└──────────────────────────┘
damerauLevenshteinDistance
導入バージョン: v24.1.0
2 つのバイト文字列間の ダメラウ・レーベンシュタイン距離 を計算します。
構文
damerauLevenshteinDistance(s1, s2)
引数
戻り値
2 つの文字列間のダメラウ・レーベンシュタイン距離を返します。 UInt64
例
使用例
SELECT damerauLevenshteinDistance('clickhouse', 'mouse')
┌─damerauLevenshteinDistance('clickhouse', 'mouse')─┐
│ 6 │
└───────────────────────────────────────────────────┘
導入バージョン: v23.9.0
文字列内のHTMLエンティティを対応する文字にデコードします。
構文
引数
s — デコード対象の HTML エンティティを含む String。String
戻り値
HTML エンティティをデコードした文字列を返します。String
例
使用例
SELECT decodeHTMLComponent('<div>Hello & "World"</div>')
┌─decodeHTMLComponent('<div>Hello & "World"</div>')─┐
│ <div>Hello & "World"</div> │
└─────────────────────────────────────────────────────────────────────────────┘
導入バージョン: v21.2.0
文字列内の XML エンティティを対応する文字にデコードします。
構文
引数
s — デコード対象の XML エンティティを含む文字列。String
戻り値
指定された文字列内の XML エンティティをデコードした結果を返します。String
例
使用例
SELECT decodeXMLComponent('<tag>Hello & World</tag>')
┌─decodeXMLCom⋯;/tag>')─┐
│ <tag>Hello & World</tag> │
└──────────────────────────┘
導入バージョン: v23.9.0
2つのバイト文字列間の編集距離を計算します。
構文
別名: levenshteinDistance
引数
戻り値
2つの文字列間の編集距離を返します。UInt64
例
使用例
SELECT editDistance('clickhouse', 'mouse')
┌─editDistance('clickhouse', 'mouse')─┐
│ 6 │
└─────────────────────────────────────┘
導入バージョン: v24.6.0
2つの UTF-8 文字列間の編集距離を計算します。
構文
別名: levenshteinDistanceUTF8
引数
戻り値
2 つの UTF-8 文字列間の編集距離を返します。UInt64
例
使用例
SELECT editDistanceUTF8('我是谁', '我是我')
┌─editDistanceUTF8('我是谁', '我是我')──┐
│ 1 │
└─────────────────────────────────────┘
導入バージョン: v21.1.0
文字列を XML のテキストノードまたは属性値に埋め込めるよう、文字列内の文字をエスケープします。
構文
引数
戻り値
エスケープされた文字列を返します。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> │
└────────────────────────────┴──────────────────────────────────────────────────────┘
導入バージョン: v1.1.0
文字列が指定された接尾辞で終わるかどうかを返します。
構文
引数
戻り値
s が suffix で終わる場合は 1、それ以外の場合は 0 を返します。 UInt8
例
使用例
SELECT endsWith('ClickHouse', 'House');
┌─endsWith('Cl⋯', 'House')─┐
│ 1 │
└──────────────────────────┘
導入バージョン: v25.10.0
文字列が、指定された大文字・小文字を区別しない接尾辞で終わるかどうかを判定します。
構文
endsWithCaseInsensitive(s, suffix)
引数
s — チェック対象の文字列。 String
suffix — チェックする大文字・小文字を区別しない接尾辞。 String
戻り値
s が大文字・小文字を区別しない suffix で終わる場合は 1、それ以外の場合は 0 を返します。 UInt8
例
使用例
SELECT endsWithCaseInsensitive('ClickHouse', 'HOUSE');
┌─endsWithCaseInsensitive('Cl⋯', 'HOUSE')─┐
│ 1 │
└─────────────────────────────────────────┘
endsWithCaseInsensitiveUTF8
導入バージョン: v25.10.0
文字列 s が、大文字・小文字を区別しない suffix で終わるかどうかを返します。
文字列には、有効な UTF-8 でエンコードされたテキストが含まれているものとします。
この前提が満たされない場合、例外はスローされず、結果は未定義です。
構文
endsWithCaseInsensitiveUTF8(s, suffix)
引数
戻り値
s が大文字・小文字を区別しない suffix で終わる場合は 1、それ以外の場合は 0 を返します。UInt8
例
使用例
SELECT endsWithCaseInsensitiveUTF8('данных', 'ых');
┌─endsWithCaseInsensitiveUTF8('данных', 'ых')─┐
│ 1 │
└─────────────────────────────────────────────┘
導入バージョン: v23.8.0
文字列 s が suffix で終わるかどうかを返します。
文字列には、有効な UTF-8 でエンコードされたテキストが含まれていることを前提としています。
この前提が満たされない場合でも、例外は発生せず、結果は未定義です。
構文
引数
戻り値
s が suffix で終わる場合は 1、それ以外の場合は 0 を返します。UInt8
例
使用例
SELECT endsWithUTF8('данных', 'ых');
┌─endsWithUTF8('данных', 'ых')─┐
│ 1 │
└──────────────────────────────┘
導入バージョン: 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('<html><head>...')─┐
│ Page Title Hello World! │
└────────────────────────────────────────┘
導入バージョン: v23.7.0
複数行文字列の最初の行を返します。
構文
引数
戻り値
入力文字列の最初の行を返します。行区切り文字がない場合は、文字列全体を返します。String
例
使用例
SELECT firstLine('foo\\nbar\\nbaz')
┌─firstLine('foo\nbar\nbaz')─┐
│ foo │
└────────────────────────────┘
導入バージョン: v24.1.0
Internationalized Domain Names in Applications (IDNA) に従い、ドメイン名の Unicode (UTF-8) 表現 (ToUnicode アルゴリズム) を返します。
エラーが発生した場合 (たとえば入力が無効な場合) は、入力文字列をそのまま返します。
大文字・小文字の正規化が行われるため、idnaEncode() と idnaDecode() を繰り返し適用しても、必ずしも元の文字列に戻るとは限りません。
構文
引数
戻り値
入力値の 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 │
└───────────────────────────────────────────────┘
導入バージョン: v24.1.0
Internationalized Domain Names in Applications (IDNA) の仕組みに従い、ドメイン名の ASCII 表現 (ToASCII アルゴリズム) を返します。
入力文字列は UTF エンコードされており、ASCII 文字列に変換可能である必要があります。そうでない場合は例外がスローされます。
パーセントデコードや、タブ、スペース、制御文字のトリミングは行われません。
構文
引数
戻り値
入力値に対する IDNA の仕組みに従い、入力文字列の ASCII 表現を返します。String
例
使用例
SELECT idnaEncode('straße.münchen.de')
┌─idnaEncode('straße.münchen.de')─────┐
│ xn--strae-oqa.xn--mnchen-3ya.de │
└─────────────────────────────────────┘
導入バージョン: v23.7.0
各単語の先頭文字を大文字に、それ以外の文字を小文字に変換します。
単語は、英数字以外の文字で区切られた英数字の連続です。
initcap は各単語の先頭文字のみを大文字に変換するため、アポストロフィや大文字を含む単語では想定どおりにならない場合があります。
これは既知の動作であり、現時点で修正する予定はありません。
構文
引数
戻り値
各単語の先頭文字を大文字にした s を返します。String
例
使用例
SELECT initcap('building for fast')
┌─initcap('building for fast')─┐
│ Building For Fast │
└──────────────────────────────┘
アポストロフィや大文字を含む単語における既知の挙動の例
SELECT initcap('John''s cat won''t eat.');
┌─initcap('Joh⋯n\'t eat.')─┐
│ John'S Cat Won'T Eat. │
└──────────────────────────┘
導入バージョン: v23.7.0
initcap と同様に、initcapUTF8 は各単語の先頭文字を大文字に、それ以外の文字を小文字に変換します。
文字列には、有効な UTF-8 でエンコードされたテキストが含まれていることを前提としています。
この前提が満たされない場合でも例外は送出されず、結果は未定義です。
この関数は言語を判別しません。たとえば、トルコ語では結果が完全に正しくならない場合があります (i/İ と i/I) 。
UTF-8 バイト列の長さが、あるコードポイントの大文字と小文字で異なる場合、そのコードポイントでは結果が正しくならない可能性があります。
構文
引数
戻り値
各単語の先頭文字を大文字に変換した s を返します。String
例
使用例
SELECT initcapUTF8('не тормозит')
┌─initcapUTF8('не тормозит')─┐
│ Не Тормозит │
└────────────────────────────┘
導入バージョン: v25.9.0
入力の String または FixedString が ASCII バイト (0x00–0x7F) のみを含む場合は 1 を返し、それ以外の場合は 0 を返します。入力が有効な ASCII である場合に最適化されています。
構文
別名: isASCII
引数
戻り値
例
isValidASCII
SELECT isValidASCII('hello') AS is_ascii, isValidASCII('你好') AS is_not_ascii
導入バージョン: v20.1.0
バイト列が有効な UTF-8 でエンコードされたテキストであるかどうかを確認します。
構文
引数
s — UTF-8 でエンコードされた文字列として有効かどうかを確認する対象の文字列。String
戻り値
バイト列が有効な UTF-8 でエンコードされたテキストを構成している場合は 1、そうでない場合は 0 を返します。UInt8
例
使用例
SELECT isValidUTF8('\\xc3\\xb1') AS valid, isValidUTF8('\\xc3\\x28') AS invalid
┌─valid─┬─invalid─┐
│ 1 │ 0 │
└───────┴─────────┘
導入バージョン: v24.1.0
2 つのバイト文字列の Jaro 類似度 を計算します。
構文
引数
戻り値
2 つの文字列間の Jaro 類似度を返します。Float64
例
使用例
SELECT jaroSimilarity('clickhouse', 'click')
┌─jaroSimilarity('clickhouse', 'click')─┐
│ 0.8333333333333333 │
└───────────────────────────────────────┘
導入バージョン: v24.1.0
2つのバイト文字列間の Jaro-Winkler similarity を計算します。
構文
jaroWinklerSimilarity(s1, s2)
引数
戻り値
2 つの文字列間の Jaro-Winkler 類似度を返します。Float64
例
使用例
SELECT jaroWinklerSimilarity('clickhouse', 'click')
┌─jaroWinklerSimilarity('clickhouse', 'click')─┐
│ 0.8999999999999999 │
└──────────────────────────────────────────────┘
導入バージョン: v22.1.0
文字列 s の左側から数えて、指定した offset 位置から始まる部分文字列を返します。
構文
引数
戻り値
戻り値:
offset が正の場合、文字列の左側から offset バイト分の s の部分文字列を返します。
offset が負の場合、文字列の左側から length(s) - |offset| バイト分の s の部分文字列を返します。
length が 0 の場合は空文字列を返します。
String
例
正の offset
SELECT left('Hello World', 5)
負のオフセット
SELECT left('Hello World', -6)
導入バージョン: v21.8.0
結果の文字列が指定したlengthに達するまで、文字列の左側に空白、または指定した文字列 (必要に応じて複数回) を埋め込みます。
構文
leftPad(string, length[, pad_string])
別名: lpad
引数
string — パディングする入力文字列です。 String
length — 結果の文字列の長さです。値が入力文字列の長さより小さい場合、入力文字列は length 文字に切り詰められます。 (U)Int*
pad_string — 任意。入力文字列のパディングに使用する文字列です。指定しない場合、入力文字列は空白でパディングされます。 String
戻り値
指定した長さになるよう左側がパディングされた文字列を返します。 String
例
使用例
SELECT leftPad('abc', 7, '*'), leftPad('def', 7)
┌─leftPad('abc', 7, '*')─┬─leftPad('def', 7)─┐
│ ****abc │ def │
└────────────────────────┴───────────────────┘
導入バージョン: v21.8.0
UTF-8文字列の左側を、結果の文字列が指定した長さに達するまで、空白または指定した文字列 (必要に応じて複数回) で埋めます。
文字列長をバイト単位で測定する leftPad とは異なり、こちらはコードポイント単位で文字列長を測定します。
構文
leftPadUTF8(string, length[, pad_string])
引数
string — パディング対象の入力文字列です。String
length — 結果の文字列の長さです。値が入力文字列の長さより小さい場合、入力文字列は length 文字に切り詰められます。(U)Int*
pad_string — 省略可能です。入力文字列のパディングに使用する文字列です。指定しない場合、入力文字列は空白でパディングされます。String
戻り値
指定した長さになるよう左側をパディングした文字列を返します。String
例
使用例
SELECT leftPadUTF8('абвг', 7, '*'), leftPadUTF8('дежз', 7)
┌─leftPadUTF8('абвг', 7, '*')─┬─leftPadUTF8('дежз', 7)─┐
│ ***абвг │ дежз │
└─────────────────────────────┴────────────────────────┘
導入バージョン: v22.1.0
UTF-8 エンコード文字列 s の左側から、指定した offset の位置から始まる部分文字列を返します。
構文
引数
戻り値
返される値:
offset が正の場合、文字列の左側から offset バイト分の s の部分文字列を返します。\n”
offset が負の場合、文字列の左側から length(s) - |offset| バイト分の s の部分文字列を返します。\n”
length が 0 の場合は空文字列を返します。
String
例
正のオフセット
SELECT leftUTF8('Привет', 4)
負のOFFSET
SELECT leftUTF8('Привет', -4)
導入バージョン: v1.1.0
文字列の長さを、バイト数や文字数ではなく、Unicode コードポイント数で返します。
文字列には有効な UTF-8 でエンコードされたテキストが含まれていることを前提としています。
この前提が満たされない場合でも例外はスローされず、結果は未定義です。
構文
別名: CHARACTER_LENGTH, CHAR_LENGTH
引数
s — 有効な UTF-8 でエンコードされたテキストを含む文字列。String
戻り値
文字列 s の長さ (Unicode コードポイント単位) 。UInt64
例
使用例
SELECT lengthUTF8('Здравствуй, мир!')
┌─lengthUTF8('Здравствуй, мир!')─┐
│ 16 │
└────────────────────────────────┘
導入バージョン: v1.1.0
ASCII 文字列を小文字に変換します。
構文
別名: lcase
引数
戻り値
s を小文字に変換した文字列を返します。 String
例
使用例
SELECT lower('CLICKHOUSE')
┌─lower('CLICKHOUSE')─┐
│ clickhouse │
└─────────────────────┘
導入バージョン: v1.1.0
文字列に有効な UTF-8 でエンコードされたテキストが含まれていることを前提に、その文字列を小文字に変換します。この前提が満たされない場合でも例外は発生せず、結果は未定義です。
構文
引数
戻り値
小文字の文字列を返します。String
例
1つ目
SELECT lowerUTF8('München') as Lowerutf8;
導入バージョン: v26.3.0
この関数は、自然順でソートするために使用されます。
構文
別名: NATURAL_SORT_KEY
引数
戻り値
s から生成されたナチュラルソートキー文字列を返します。String
例
使用例
SELECT s FROM t ORDER BY naturalSortKey(s)
┌─s───┐
│ a1 │
| a02 │
└─────┘
導入バージョン: v21.11.0
NFC正規化形式に従って、UTF-8文字列を正規化します。
構文
引数
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 │
└──────────┴──────────────────┴────────────────┴────────────────────────┘
導入バージョン: v21.11.0
UTF-8文字列を、NFD正規化形式に従って正規化します。
構文
引数
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 │
└──────────┴──────────────────┴────────────────┴────────────────────────┘
導入バージョン: v21.11.0
UTF-8文字列を NFKC 正規化形式 に従って正規化します。
構文
引数
str — UTF-8 でエンコードされた入力文字列。 String
戻り値
UTF-8 文字列を NFKC で正規化した形式を返します。 String
例
使用例
SELECT
'① ② ③' AS original, -- 丸囲み数字
normalizeUTF8NFKC('① ② ③') AS nfkc_normalized; -- 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 │
└────────────┴────────────────────┘
導入バージョン: v21.11.0
UTF-8文字列を NFKD正規化形式 に従って正規化します。
構文
引数
str — UTF-8 でエンコードされた入力文字列。 String
戻り値
UTF-8 文字列を NFKD で正規化した形式を返します。 String
例
使用例
SELECT
'H₂O²' AS original, -- H + 下付き文字 2 + O + 上付き文字 2
normalizeUTF8NFKD('H₂O²') AS nfkd_normalized; -- H 2 O 2 に変換
┌─original─┬─nfkd_normalized─┐
│ H₂O² │ H2O2 │
└──────────┴─────────────────┘
導入バージョン: v24.1.0
Punycode でエンコードされた文字列の UTF-8 エンコードされた平文を返します。
有効な Punycode エンコード文字列が指定されていない場合は、例外がスローされます。
構文
引数
s — Punycode でエンコードされた文字列。String
戻り値
入力値の平文を返します。String
例
使用例
SELECT punycodeDecode('Mnchen-3ya')
┌─punycodeDecode('Mnchen-3ya')─┐
│ München │
└──────────────────────────────┘
導入バージョン: v24.1.0
文字列の Punycode 表現を返します。
文字列は UTF-8 でエンコードされている必要があり、そうでない場合の動作は未定義です。
構文
引数
戻り値
入力値のPunycode表現を返します。String
使用例
使用例
SELECT punycodeEncode('München')
┌─punycodeEncode('München')─┐
│ Mnchen-3ya │
└───────────────────────────┘
導入バージョン: v23.2.0
正規表現パターンに一致し、正規表現のグループ索引に対応する haystack 内の最初の文字列を抽出します。
構文
regexpExtract(haystack, pattern[, index])
別名: REGEXP_EXTRACT
引数
haystack — 正規表現パターンの照合対象となる String。String
pattern — String、正規表現。pattern には複数の正規表現グループを含めることができ、index は抽出する正規表現グループを示します。インデックス 0 は、正規表現全体との一致を意味します。const String
index — 省略可能。0 以上の整数で、デフォルト値は 1 です。抽出する正規表現グループを表します。(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+)-(\\d+)', 1)─┬─regexpExtract('100-200', '(\\d+)-(\\d+)', 2)─┬─regexpExtract('100-200', '(\\d+)-(\\d+)', 0)─┬─regexpExtract('100-200', '(\\d+)-(\\d+)')─┐
│ 100 │ 200 │ 100-200 │ 100 │
└──────────────────────────────────────────────┴──────────────────────────────────────────────┴──────────────────────────────────────────────┴───────────────────────────────────────────┘
導入バージョン: 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 — 検索対象の文字列。String
pattern — 正規表現のパターン。const String
position — 任意。検索を開始する 1 始まりのバイト位置。デフォルト: 1。(U)Int*
occurrence — 任意。何番目の一致を返すかを指定します。デフォルト: 1。(U)Int*
return_option — 任意。0 は一致の開始位置を返し、1 は一致直後の位置を返します。デフォルト: 0。(U)Int*
flags — 任意。正規表現フラグ。対応: i (大文字と小文字を区別しない) 、c (大文字と小文字を区別する) 、m/n (複数行アンカー) 、s (ドットが改行にも一致) 。デフォルト: 空文字列。const String
subexpression — 任意。位置を返すキャプチャグループのインデックス。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);
┌─...─┬─...─┬─...─┬─...─┬─...─┐
│ 7 │ 4 │ 5 │ 7 │ 10 │
└─────┴─────┴─────┴─────┴─────┘
導入バージョン: 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 │
└────────────────────────────────────────────┘
導入バージョン: v20.1.0
指定した回数だけ文字列を繰り返し連結します。
構文
引数
戻り値
文字列 s を n 回繰り返した文字列です。n が負の場合、関数は空文字列を返します。String
例
使用例
┌─repeat('abc', 10)──────────────┐
│ abcabcabcabcabcabcabcabcabcabc │
└────────────────────────────────┘
導入バージョン: v1.1.0
文字列中の Unicode コードポイント列を逆順にします。
文字列には有効な UTF-8 でエンコードされたテキストが含まれていることを前提としています。
この前提が満たされていない場合でも例外はスローされず、結果は未定義です。
構文
引数
s — 有効な UTF-8 でエンコードされたテキストを含む String。String
戻り値
Unicode コードポイントの並びを逆順にした文字列。String
例
使用例
SELECT reverseUTF8('ClickHouse')
導入バージョン: v22.1.0
文字列 s の右側から指定した offset を開始位置として、部分文字列を返します。
構文
引数
戻り値
以下を返します。
offset が正の場合、文字列の右側から offset バイト分の s の部分文字列。
offset が負の場合、文字列の右側から length(s) - |offset| バイト分の s の部分文字列。
length が 0 の場合は空文字列。
String
例
正のオフセット
負のオフセット
SELECT right('Hello', -3)
導入バージョン: v21.8.0
結果の文字列が指定したlengthに達するまで、文字列の右側を空白、または指定した文字列 (必要に応じて複数回) で埋めます。
構文
rightPad(string, length[, pad_string])
別名: rpad
引数
string — パディングする入力文字列です。 String
length — 結果の文字列の長さです。値が入力文字列の長さより小さい場合、入力文字列は length 文字に切り詰められます。 (U)Int*
pad_string — 省略可能です。入力文字列の右側を埋めるための文字列です。指定しない場合、入力文字列は空白で埋められます。 String
戻り値
指定した長さになるよう右側が埋められた文字列を返します。 String
例
使用例
SELECT rightPad('abc', 7, '*'), rightPad('abc', 7)
┌─rightPad('abc', 7, '*')─┬─rightPad('abc', 7)─┐
│ abc**** │ abc │
└─────────────────────────┴────────────────────┘
導入バージョン: v21.8.0
結果の文字列が指定した長さに達するまで、文字列の右側を空白または指定した文字列で (必要に応じて複数回) 埋めます。
文字列の長さをバイト単位で測定する rightPad とは異なり、この関数では文字列の長さはコードポイント単位で測定されます。
構文
rightPadUTF8(string, length[, pad_string])
引数
string — パディングする対象の入力文字列です。String
length — 生成される文字列の長さです。値が入力文字列の長さより小さい場合、入力文字列は length 文字に切り詰められます。(U)Int*
pad_string — 任意。入力文字列を埋めるために使用する文字列です。指定しない場合、入力文字列は空白で埋められます。String
戻り値
指定した長さになるよう右側が埋められた文字列を返します。String
例
使用例
SELECT rightPadUTF8('абвг', 7, '*'), rightPadUTF8('абвг', 7)
┌─rightPadUTF8('абвг', 7, '*')─┬─rightPadUTF8('абвг', 7)─┐
│ абвг*** │ абвг │
└──────────────────────────────┴─────────────────────────┘
導入バージョン: v22.1.0
UTF-8 でエンコードされた文字列 s について、右側から指定した offset を開始位置とする部分文字列を返します。
構文
引数
戻り値
返される値:
offset が正の場合、文字列の右側から offset バイト分の s の部分文字列を返します。
offset が負の場合、文字列の右側から length(s) - |offset| バイト分の s の部分文字列を返します。
length が 0 の場合は空文字列を返します。
String
例
正の offset
SELECT rightUTF8('Привет', 4)
負の OFFSET
SELECT rightUTF8('Привет', -4)
導入バージョン: v23.4.0
文字列の Soundexコード を返します。
構文
引数
戻り値
入力文字列の Soundex コードを返します。String
例
使用例
┌─soundex('aksel')─┐
│ A240 │
└──────────────────┘
導入バージョン: v23.5.0
指定した回数だけ、スペース文字 ( ) を連結します。
構文
引数
戻り値
空白を n 回繰り返した文字列を返します。n <= 0 の場合、関数は空文字列を返します。String
例
使用例
SELECT space(3) AS res, length(res);
┌─res─┬─length(res)─┐
│ │ 3 │
└─────┴─────────────┘
導入バージョン: v25.5.0
指定された文字列について、長さが少なくとも n のすべての部分文字列を見つけます。
このとき、部分文字列の両端にある (n-1)-gram のハッシュは、
その部分文字列内の任意の (n-1)-gram のハッシュよりも厳密に大きくなります。
ハッシュ関数として CRC32 を使用します。
構文
sparseGrams(s[, min_ngram_length[, max_ngram_length[, min_cutoff_length]]])
引数
s — 入力文字列。String
min_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','lice','ice'] │
└────────────────────────────────────┘
導入バージョン: v25.5.0
指定した文字列について、長さが n 以上のすべての部分文字列のハッシュ値を求めます。
このとき、各部分文字列の両端にある (n-1)-gram のハッシュ値は、
その部分文字列内にある他のどの (n-1)-gram のハッシュ値よりも厳密に大きくなります。
ハッシュ関数には CRC32 を使用します。
構文
sparseGramsHashes(s[, min_ngram_length, max_ngram_length])
引数
s — 入力文字列。String
min_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)──────────────────────┐
│ [1481062250,2450405249,4012725991,1918774096] │
└────────────────────────────────────────────────────┘
導入バージョン: 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 — 入力文字列です。String
min_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)─┐
│ [4178533925,3855635300,561830861] │
└───────────────────────────────────┘
導入バージョン: 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 — 入力文字列です。String
min_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)─┐
│ ['али','лис','иса'] │
└─────────────────────────────┘
導入バージョン: v1.1.0
文字列が指定した文字列で始まるかどうかを判定します。
構文
引数
戻り値
s が prefix で始まる場合は 1、そうでない場合は 0 を返します。UInt8
例
使用例
SELECT startsWith('ClickHouse', 'Click');
┌─startsWith('⋯', 'Click')─┐
│ 1 │
└──────────────────────────┘
startsWithCaseInsensitive
導入バージョン: v25.10.0
文字列が、指定された大文字と小文字を区別しない文字列で始まるかどうかを判定します。
構文
startsWithCaseInsensitive(s, prefix)
引数
s — チェック対象の文字列。String
prefix — チェックする大文字と小文字を区別しないプレフィックス。String
戻り値
s が大文字と小文字を区別しない prefix で始まる場合は 1、それ以外の場合は 0 を返します。UInt8
例
使用例
SELECT startsWithCaseInsensitive('ClickHouse', 'CLICK');
┌─startsWithCaseInsensitive('⋯', 'CLICK')─┐
│ 1 │
└─────────────────────────────────────────┘
startsWithCaseInsensitiveUTF8
導入バージョン: v25.10.0
文字列が、指定された大文字と小文字を区別しないプレフィックスで始まるかどうかを判定します。
文字列は、有効な UTF-8 でエンコードされたテキストであることを前提とします。
この前提が満たされない場合でも、例外は発生せず、結果は未定義となります。
構文
startsWithCaseInsensitiveUTF8(s, prefix)
引数
s — 確認する文字列。String
prefix — 確認対象の、大文字と小文字を区別しないプレフィックス。String
戻り値
s が大文字と小文字を区別しない prefix で始まる場合は 1、それ以外の場合は 0 を返します。UInt8
例
使用例
SELECT startsWithCaseInsensitiveUTF8('приставка', 'при')
┌─startsWithUT⋯ка', 'при')─┐
│ 1 │
└──────────────────────────┘
導入バージョン: v23.8.0
文字列が指定されたプレフィックスで始まるかどうかを確認します。
文字列には、有効な UTF-8 でエンコードされたテキストが含まれていることを前提としています。
この前提が満たされない場合でも、例外はスローされず、結果は未定義です。
構文
startsWithUTF8(s, prefix)
引数
戻り値
s が prefix で始まる場合は 1、そうでない場合は 0 を返します。 UInt8
例
使用例
SELECT startsWithUTF8('приставка', 'при')
┌─startsWithUT⋯ка', 'при')─┐
│ 1 │
└──────────────────────────┘
導入バージョン: v25.6.0
文字列内のバイト分布のシャノンエントロピーを計算します。
構文
引数
戻り値
文字列内のバイト分布のシャノンエントロピーを返します。Float64
例
使用例
SELECT stringBytesEntropy('Hello, world!')
┌─stringBytesEntropy('Hello, world!')─┐
│ 3.07049960 │
└─────────────────────────────────────┘
導入バージョン: v25.6.0
文字列に含まれる異なるバイトの数をカウントします。
構文
引数
戻り値
文字列内の異なるバイトの数を返します。UInt16
例
使用例
SELECT stringBytesUniq('Hello')
┌─stringBytesUniq('Hello')─┐
│ 4 │
└──────────────────────────┘
導入バージョン: v23.11.0
2つのバイト列間のジャッカード類似度指数を計算します。
構文
stringJaccardIndex(s1, s2)
引数
戻り値
2つの文字列のジャッカード類似度指数を返します。Float64
例
使用例
SELECT stringJaccardIndex('clickhouse', 'mouse')
┌─stringJaccardIndex('clickhouse', 'mouse')─┐
│ 0.4 │
└───────────────────────────────────────────┘
導入バージョン: v23.11.0
UTF8 でエンコードされた文字列に対する stringJaccardIndex と同様の関数です。
構文
stringJaccardIndexUTF8(s1, s2)
引数
戻り値
2つのUTF-8文字列のジャッカード類似度指数を返します。 Float64
例
使用例
SELECT stringJaccardIndexUTF8('我爱你', '我也爱你')
┌─stringJaccardIndexUTF8('我爱你', '我也爱你')─┐
│ 0.75 │
└─────────────────────────────────────────────┘
導入バージョン: v1.1.0
指定したバイト位置 offset から始まる、文字列 s の部分文字列を返します。
バイト位置は、以下のルールに従って 1 から数えます。
offset が 0 の場合は、空文字列が返されます。
offset が負の場合、部分文字列は先頭からではなく、文字列の末尾から offset 文字分さかのぼった位置から始まります。
省略可能な引数 length では、返される部分文字列の最大バイト数を指定します。
構文
substring(s, offset[, length])
別名: byteSlice, mid, substr
引数
戻り値
offset から始まる、長さ length バイトの s の部分文字列を返します。String
例
基本的な使い方
SELECT 'database' AS db, substr(db, 5), substr(db, 5, 1)
┌─db───────┬─substring('database', 5)─┬─substring('database', 5, 1)─┐
│ database │ base │ b │
└──────────┴──────────────────────────┴─────────────────────────────┘
導入バージョン: v23.7.0
Spark や MySQL と同様に、区切り文字 delim が count 回現れる位置より前にある s の部分文字列を返します。
構文
substringIndex(s, delim, count)
別名: SUBSTRING_INDEX
引数
s — 部分文字列を抽出する対象の文字列です。 String
delim — 分割に使用する区切り文字です。 String
count — 部分文字列を抽出する前に数える区切り文字の出現回数です。count が正の場合は、最後の区切り文字 (左から数えた場合) より左側のすべてが返されます。count が負の場合は、最後の区切り文字 (右から数えた場合) より右側のすべてが返されます。 UInt または Int
戻り値
s のうち、delim が count 回出現する位置より前の部分文字列を返します。 String
例
使用例
SELECT substringIndex('www.clickhouse.com', '.', 2)
┌─substringIndex('www.clickhouse.com', '.', 2)─┐
│ www.clickhouse │
└──────────────────────────────────────────────┘
導入バージョン: v23.7.0
Unicode コードポイント単位で、区切り文字 delim が count 回出現する位置より前にある s の部分文字列を返します。
文字列には有効な UTF-8 でエンコードされたテキストが含まれていることを前提とします。
この前提が満たされない場合でも、例外はスローされず、結果は未定義です。
構文
substringIndexUTF8(s, delim, count)
引数
s — 部分文字列を抽出する対象の文字列です。String
delim — 分割に使用する文字です。String
count — 部分文字列を抽出する前に数える区切り文字の出現回数です。count が正の場合は、最後の区切り文字 (左から数える) より左側のすべてが返されます。count が負の場合は、最後の区切り文字 (右から数える) より右側のすべてが返されます。UInt または Int
戻り値
delim が count 回出現する位置より前の s の部分文字列を返します。String
例
UTF8 の例
SELECT substringIndexUTF8('www.straßen-in-europa.de', '.', 2)
導入バージョン: v1.1.0
指定されたコードポイントのインデックス offset から始まる文字列 s の部分文字列を返します。
コードポイントのカウントは、次のルールに従って 1 から始まります。
offset が 0 の場合は、空文字列が返されます。
offset が負の値の場合、部分文字列は文字列の先頭ではなく、末尾から offset コードポイント分の位置から始まります。
省略可能な引数 length は、返される部分文字列に含められるコードポイント数の最大値を指定します。
この関数は、文字列に有効な UTF-8 でエンコードされたテキストが含まれていることを前提としています。
この前提が満たされない場合でも、例外はスローされず、結果は未定義です。
構文
substringUTF8(s, offset[, length])
引数
戻り値
コードポイント位置 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üßt
導入バージョン: v20.1.0
UTF-8 として不正な文字を置換文字 � (U+FFFD) に置き換え、文字列を有効な UTF-8 エンコーディングに変換します。
不正な文字が複数連続している場合は、1 つの置換文字にまとめられます。
構文
引数
s — String データ型のオブジェクトとして表される任意のバイト列。String
戻り値
有効な UTF-8 文字列を返します。String
例
使用例
SELECT toValidUTF8('\\x61\\xF0\\x80\\x80\\x80b')
c
┌─toValidUTF8('a����b')─┐
│ a�b │
└───────────────────────┘
導入バージョン: v20.1.0
文字列の先頭と末尾から、指定した文字を取り除きます。
デフォルトでは、一般的な空白文字 (ASCII) を取り除きます。
Syntax
trimBoth(s[, trim_characters])
別名: trim
引数
s — トリムする文字列。String
trim_characters — 任意。トリムする文字。指定しない場合は、一般的な空白文字が削除されます。String
戻り値
指定した文字を両端からトリムした文字列を返します。String
例
使用例
SELECT trimBoth('$$ClickHouse$$', '$')
┌─trimBoth('$$⋯se$$', '$')─┐
│ ClickHouse │
└──────────────────────────┘
導入バージョン: v20.1.0
文字列の先頭から、指定した文字を取り除きます。
デフォルトでは、一般的な空白文字 (ASCII) を取り除きます。
構文
trimLeft(input[, trim_characters])
別名: ltrim
引数
input — トリムする対象の文字列。 String
trim_characters — 省略可能。トリムする文字。指定しない場合は、一般的な空白文字が削除されます。 String
戻り値
左側から指定した文字がトリムされた文字列を返します。 String
例
使用例
SELECT trimLeft('ClickHouse', 'Click');
┌─trimLeft('Cl⋯', 'Click')─┐
│ House │
└──────────────────────────┘
導入バージョン: v20.1.0
文字列の末尾から指定した文字を取り除きます。
デフォルトでは、一般的な空白文字 (ASCII) を取り除きます。
構文
trimRight(s[, trim_characters])
別名: rtrim
引数
s — トリムする文字列です。 String
trim_characters — 省略可能な、トリムする文字です。指定しない場合は、一般的な空白文字が削除されます。 String
戻り値
右側から指定した文字をトリムした文字列を返します。 String
例
使用例
SELECT trimRight('ClickHouse','House');
┌─trimRight('C⋯', 'House')─┐
│ Click │
└──────────────────────────┘
導入バージョン: v25.6.0
文字列を受け取り、Base32エンコード方式を使用してデコードします。
構文
引数
encoded — デコード対象の String 型のカラムまたは定数。文字列が有効な Base32 エンコードでない場合は、エラー時に空文字列を返します。 String
戻り値
引数をデコードした値を含む文字列を返します。 String
例
使用例
SELECT tryBase32Decode('IVXGG33EMVSA====');
┌─tryBase32Decode('IVXGG33EMVSA====')─┐
│ Encoded │
└─────────────────────────────────────┘
導入バージョン: v22.10.0
base58Decode と同様ですが、エラーが発生した場合は空文字列を返します。
構文
tryBase58Decode(encoded[, expected_size])
引数
encoded — String型のカラムまたは定数。文字列が有効なBase58エンコードでない場合、エラー時には空文字列を返します。String
expected_size — 任意。デコード後の想定サイズ (バイト単位) 。32 または 64 の場合は最適化されたデコーダーが使用され、それ以外の値では汎用デコーダーが使用されます。UInt8, UInt16, UInt32, or UInt64
戻り値
引数のデコードされた値を含む文字列を返します。String
例
使用例
SELECT tryBase58Decode('3dc8KtHrwM') AS res, tryBase58Decode('invalid') AS res_invalid;
┌─res─────┬─res_invalid─┐
│ Encoded │ │
└─────────┴─────────────┘
導入バージョン: v18.16.0
base64Decode と同様ですが、エラーが発生した場合は空文字列を返します。
構文
引数
encoded — デコードする String 型のカラムまたは定数。文字列が有効な Base64 エンコードでない場合、エラー時には空文字列を返します。String
戻り値
引数をデコードした値を含む文字列を返します。String
例
使用例
SELECT tryBase64Decode('Y2xpY2tob3VzZQ==')
┌─tryBase64Decode('Y2xpY2tob3VzZQ==')─┐
│ clickhouse │
└─────────────────────────────────────┘
導入バージョン: v18.16.0
base64URLDecode と同様ですが、エラーが発生した場合は空文字列を返します。
構文
tryBase64URLDecode(encoded)
引数
encoded — デコードする String 型のカラムまたは定数。文字列が有効な Base64 エンコードでない場合、エラー時には空文字列を返します。String
戻り値
引数をデコードした値を含む文字列を返します。String
例
使用例
SELECT tryBase64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ')
┌─tryBase64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ')─┐
│ https://clickhouse.com │
└──────────────────────────────────────────────────────┘
導入バージョン: v24.1.0
Internationalized Domain Names in Applications (IDNA) の仕組みに従い、ドメイン名の Unicode (UTF-8) 表現 (ToUnicode アルゴリズム) を返します。
エラーが発生した場合は、例外をスローする代わりに空文字列を返します。
構文
引数
戻り値
入力値のIDNAメカニズムに従って、入力文字列のASCII表現を返します。入力が無効な場合は空文字列を返します。String
例
使用例
SELECT tryIdnaEncode('straße.münchen.de')
┌─tryIdnaEncode('straße.münchen.de')──┐
│ xn--strae-oqa.xn--mnchen-3ya.de │
└─────────────────────────────────────┘
導入バージョン: v24.1.0
punycodeDecode と同様ですが、有効な Punycode でエンコードされた文字列が指定されていない場合は空文字列を返します。
構文
引数
s — Punycode でエンコードされた文字列。String
戻り値
入力値の平文を返します。入力が無効な場合は空文字列を返します。String
例
使用例
SELECT tryPunycodeDecode('Mnchen-3ya')
┌─tryPunycodeDecode('Mnchen-3ya')─┐
│ München │
└─────────────────────────────────┘
導入バージョン: v1.1.0
文字列内の ASCII のラテン文字を大文字に変換します。
構文
別名: ucase
引数
戻り値
s を大文字に変換した文字列を返します。 String
例
使用例
SELECT upper('clickhouse')
┌─upper('clickhouse')─┐
│ CLICKHOUSE │
└─────────────────────┘
導入バージョン: v1.1.0
文字列が有効な UTF-8 でエンコードされたテキストを含むものと仮定して、その文字列を大文字に変換します。
この前提が満たされない場合でも例外はスローされず、結果は未定義です。
この関数は言語を判別しないため、たとえばトルコ語では結果が完全に正確にならない場合があります (i/İ と i/I など) 。
UTF-8 のバイト列の長さが、あるコードポイントの大文字と小文字で異なる場合 (ẞ と ß など) 、そのコードポイントについては結果が正しくない可能性があります。
構文
引数
戻り値
String型の値。String
例
使用例
SELECT upperUTF8('München') AS Upperutf8
┌─Upperutf8─┐
│ MÜNCHEN │
└───────────┘