メインコンテンツへスキップ
一般的な文字列関数文字列検索関数 については、別途説明しています。
以下のドキュメントは、system.functions システムテーブルから生成されています。

format

導入バージョン: v20.1.0 Python のフォーマットと同様に、引数で指定した値 (文字列、整数など) を使って pattern 文字列をフォーマットします。 パターン文字列には、中かっこ {} で囲まれた置換フィールドを含めることができます。 中かっこで囲まれていない部分はすべてリテラルテキストと見なされ、そのまま出力にコピーされます。 中かっこそのものを文字として扱うには、{{ および }} のように 2 つ重ねてエスケープします。 フィールド名には数値 (0 から始まる) か空欄を指定できます (空欄の場合は、暗黙的に連番が割り当てられます) 。 構文
format(pattern, s0[, s1, ...])
引数
  • pattern — プレースホルダーを含むフォーマット文字列。String
  • s0[, s1, ...]pattern に埋め込む 1 つ以上の値。Any
戻り値 フォーマット済みの文字列を返します。String 番号付きプレースホルダー
Query
SELECT format('{1} {0} {1}', 'World', 'Hello')
Response
┌─format('{1} {0} {1}', 'World', 'Hello')─┐
│ Hello World Hello                       │
└─────────────────────────────────────────┘
暗黙的な番号付け
Query
SELECT format('{} {}', 'Hello', 'World')
Response
┌─format('{} {}', 'Hello', 'World')─┐
│ Hello World                       │
└───────────────────────────────────┘

overlay

導入バージョン: v24.9.0 文字列 input の一部を、1 から始まる位置 offset から別の文字列 replace に置き換えます。 構文
overlay(s, replace, offset[, length])
引数
  • s — 入力文字列。String
  • replace — 置換文字列。const String
  • offset — 整数型 Int (1始まり) 。offset が負の場合は、文字列 s の末尾から数えます。Int
  • length — 任意。整数型 Intlength は、入力文字列 s 内で置換する部分文字列の長さを指定します。length を指定しない場合、s から削除されるバイト数は replace の長さと同じになります。指定した場合は、length バイトが削除されます。Int
戻り値 置換後の文字列を返します。String 基本的な置換
Query
SELECT overlay('My father is from Mexico.', 'mother', 4) AS res;
Response
┌─res──────────────────────┐
│ My mother is from Mexico.│
└──────────────────────────┘
長さを指定する置換
Query
SELECT overlay('My father is from Mexico.', 'dad', 4, 6) AS res;
Response
┌─res───────────────────┐
│ My dad is from Mexico.│
└───────────────────────┘

overlayUTF8

導入バージョン: v24.9.0 1 始まりの位置 offset から、文字列 s の一部を別の文字列 replace に置き換えます。 文字列には、有効な UTF-8 でエンコードされたテキストが含まれていることを前提としています。 この前提が満たされない場合でも、例外は送出されず、結果は未定義です。 構文
overlayUTF8(s, replace, offset[, length])
引数
  • s — 入力文字列。 String
  • replace — 置換文字列。 const String
  • offset — 整数型 Int (1始まり) 。offset が負の場合は、入力文字列 s の末尾から数えます。 (U)Int*
  • length — 任意。置換する入力文字列 s 内の部分文字列の長さを指定します。length を指定しない場合、s から削除される文字数は replace の長さと同じです。指定した場合は、length 文字を削除します。 (U)Int*
戻り値 置換後の文字列を返します。 String UTF-8 の置換
Query
SELECT overlayUTF8('Mein Vater ist aus Österreich.', 'der Türkei', 20) AS res;
Response
┌─res───────────────────────────┐
│ Mein Vater ist aus der Türkei.│
└───────────────────────────────┘

printf

導入バージョン: v24.8.0 printf 関数は、引数で指定した値 (文字列、整数、浮動小数点数など) を使って、C++ の printf 関数と同様に文字列をフォーマットします。 フォーマット文字列には、% 文字で始まるフォーマット指定子を含めることができます。 % と、それに続くフォーマット指定子に含まれないものは、すべてリテラルテキストと見なされ、そのまま出力にコピーされます。 リテラルの % 文字は %% でエスケープできます。 フォーマット文字列には、定数またはカラム式を指定できるため、行ごとに異なるフォーマットパターンを使用できます。 構文
printf(format[, sub1, sub2, ...])
引数
  • format% 指定子を含むフォーマット文字列。String
  • sub1, sub2, ... — 任意。フォーマット文字列に埋め込む 0 個以上の値。Any
戻り値 フォーマットされた文字列を返します。String C++スタイルのフォーマット
Query
SELECT printf('%%%s %s %d', 'Hello', 'World', 2024);
Response
┌─printf('%%%s %s %d', 'Hello', 'World', 2024)─┐
│ %Hello World 2024                            │
└──────────────────────────────────────────────┘

regexpQuoteMeta

導入バージョン: v20.1.0 正規表現で特別な意味を持つ次の文字の前に、バックスラッシュを追加します: \0, \\, |, (, ), ^, $, ., [, ], ?, *, +, {, :, -。 この実装は、re2::RE2::QuoteMeta とは若干異なります。 ゼロバイトは \x00 ではなく \0 としてエスケープされ、必要な文字のみがエスケープされます。 構文
regexpQuoteMeta(s)
引数
  • s — 正規表現用にエスケープする文字を含む入力文字列。String
戻り値 正規表現の特殊文字がエスケープされた文字列を返します。String 正規表現の特殊文字をエスケープする
Query
SELECT regexpQuoteMeta('Hello. [World]? (Yes)*') AS res
Response
┌─res───────────────────────────┐
│ Hello\. \[World\]\? \(Yes\)\* │
└───────────────────────────────┘

replaceAll

導入バージョン: v1.1.0 haystack 内にある部分文字列 pattern を、replacement 文字列にすべて置き換えます。 構文
replaceAll(haystack, pattern, replacement)
別名: replace 引数
  • haystack — 検索対象の文字列です。String
  • pattern — 検索して置換する部分文字列です。const String
  • replacementpattern を置き換える文字列です。const String
戻り値 pattern のすべての出現箇所を置換した文字列を返します。String すべての出現箇所を置換
Query
SELECT replaceAll('Hello, Hello world', 'Hello', 'Hi') AS res;
Response
┌─res──────────┐
│ Hi, Hi world │
└──────────────┘

replaceOne

導入バージョン: v1.1.0 haystack 内で最初に出現する部分文字列 pattern を、文字列 replacement に置き換えます。 構文
replaceOne(haystack, pattern, replacement)
引数
  • haystack — 検索対象の入力文字列です。String
  • pattern — 検索して置換する部分文字列です。const String
  • replacementpattern を置換する文字列です。const String
戻り値 pattern の最初の出現箇所を置換した文字列を返します。String 最初の出現箇所を置換
Query
SELECT replaceOne('Hello, Hello world', 'Hello', 'Hi') AS res;
Response
┌─res─────────────┐
│ Hi, Hello world │
└─────────────────┘

replaceRegexpAll

導入バージョン: v1.1.0 replaceRegexpOne と似ていますが、パターンに一致するすべての箇所を置き換えます。 ただし、正規表現が空の部分文字列にマッチする場合、置換は1回しか行われません。 構文
replaceRegexpAll(haystack, pattern, replacement)
別名: REGEXP_REPLACE 引数
  • haystack — 検索対象の入力文字列です。String
  • pattern — 検索する正規表現パターンです。const String
  • replacement — パターンの置換に使用する文字列です。置換指定を含めることができます。const String
戻り値 すべての正規表現一致が置換された文字列を返します。String すべての文字を2倍にして置換する
Query
SELECT replaceRegexpAll('Hello123', '.', '\\\\0\\\\0') AS res
Response
┌─res──────────────────┐
│ HHeelllloo112233     │
└──────────────────────┘
空文字列の置換例
Query
SELECT replaceRegexpAll('Hello, World!', '^', 'here: ') AS res
Response
┌─res─────────────────┐
│ here: Hello, World! │
└─────────────────────┘

replaceRegexpOne

導入バージョン: v1.1.0 haystack 内で、正規表現 pattern (re2 構文) に一致する部分文字列の最初の出現箇所を replacement 文字列に置き換えます。 replacement には置換 \0-\9 を含めることができます。 置換 \1-\9 は第1〜第9のキャプチャグループ (部分一致) に対応し、置換 \0 は一致全体に対応します。 pattern または replacement 文字列内で \ 文字そのものを使用するには、\ でエスケープします。 また、文字列リテラルでは追加のエスケープが必要になる点にも注意してください。 構文
replaceRegexpOne(haystack, pattern, replacement)
引数
  • haystack — 検索対象の入力文字列です。String
  • pattern — 検索する正規表現パターンです。const String
  • replacementpattern に一致した部分を置き換える文字列です。置換指定 を含めることができます。const String
戻り値 最初に一致した正規表現パターンを置き換えた文字列を返します。String ISO日付をアメリカ形式に変換する
Query
SELECT DISTINCT
    EventDate,
    replaceRegexpOne(toString(EventDate), '(\\d{4})-(\\d{2})-(\\d{2})', '\\2/\\3/\\1') AS res
FROM test.hits
LIMIT 7
FORMAT TabSeparated
Response
2014-03-17      03/17/2014
2014-03-18      03/18/2014
2014-03-19      03/19/2014
2014-03-20      03/20/2014
2014-03-21      03/21/2014
2014-03-22      03/22/2014
2014-03-23      03/23/2014
文字列を10回繰り返す
Query
SELECT replaceRegexpOne('Hello, World!', '.*', '\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0') AS res
Response
┌─res────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World! │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

translate

導入バージョン: v22.7.0 from および to 文字列で定義された 1 対 1 の文字対応に従って、文字列 s 内の文字を置換します。 fromto は定数の ASCII 文字列である必要があります。 fromto の長さが同じ場合、s 内の from の 1 文字目は to の 1 文字目に、from の 2 文字目は to の 2 文字目に、というように置換されます。 fromto より多くの文字が含まれている場合、to に対応する文字がない from 末尾の文字は、s からすべて削除されます。 s 内の非 ASCII 文字は、この関数では変更されません。 構文
translate(s, from, to)
引数
  • s — 変換対象の入力文字列。String
  • from — 置換する文字を含む定数 ASCII 文字列。const String
  • to — 置換後の文字を含む定数 ASCII 文字列。const String
戻り値 文字変換が適用された文字列を返します。String 文字マッピング
Query
SELECT translate('Hello, World!', 'delor', 'DELOR') AS res
Response
┌─res───────────┐
│ HELLO, WORLD! │
└───────────────┘
長さが異なる場合
Query
SELECT translate('clickhouse', 'clickhouse', 'CLICK') AS res
Response
┌─res───┐
│ CLICK │
└───────┘

translateUTF8

導入バージョン: v22.7.0 translate と同様ですが、sfromto は UTF-8 でエンコードされた文字列であることを前提としています。 構文
translateUTF8(s, from, to)
引数
  • s — 変換対象の UTF-8 入力文字列。String
  • from — 置換対象の文字を含む定数 UTF-8 文字列。const String
  • to — 置換後の文字を含む定数 UTF-8 文字列。const String
戻り値 String データ型の値を返します。String UTF-8 文字の変換
Query
SELECT translateUTF8('Münchener Straße', 'üß', 'us') AS res;
Response
┌─res──────────────┐
│ Munchener Strase │
└──────────────────┘
最終更新日 2026年6月10日