Help wanted!
The following content of this documentation page has been machine-translated. But unlike other websites, it is not done on the fly. This translated text lives on GitHub repository alongside main ClickHouse codebase and waits for fellow native speakers to make it more human-readable. You can also use the original English version as a reference.
文字列の検索と置換のための関数
replaceOne(干し草、パターン、置換)
それが存在する場合は、最初の出現を置き換えます。 ‘pattern’ サブストリング ‘haystack’ と ‘replacement’ 部分文字列。
以降, ‘pattern’ と ‘replacement’ 定数である必要があります。
replaceAll(干し草,パターン,置換),replace(干し草,パターン,置換)
すべての出現を置き換えます。 ‘pattern’ サブストリング ‘haystack’ と ‘replacement’ 部分文字列。
replaceRegexpOne(干し草、パターン、置換)
を使用して交換 ‘pattern’ 正規表現。 Re2正規表現。
存在する場合は、最初の出現のみを置き換えます。
パターンは次のように指定できます ‘replacement’. このパター \0-\9
.
置換 \0
正規表現全体を含みます。 置換 \1-\9
サブパターンに対応するnumbers.To 使用する \
テンプレー \
.
また、文字列リテラルには余分なエスケープが必要です。
例1 日付をアメリカ形式に変換する:
SELECT DISTINCT
EventDate,
replaceRegexpOne(toString(EventDate), '(\\d{4})-(\\d{2})-(\\d{2})', '\\2/\\3/\\1') AS res
FROM test.hits
LIMIT 7
FORMAT TabSeparated
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
例2。 文字列を十回コピーする:
SELECT replaceRegexpOne('Hello, World!', '.*', '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0') AS res
┌─res────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World! │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
replaceRegexpAll(干し草の山,パターン,置換)
これは同じことを行いますが、すべての出現を置き換えます。 例:
SELECT replaceRegexpAll('Hello, World!', '.', '\\0\\0') AS res
┌─res────────────────────────┐
│ HHeelllloo,, WWoorrlldd!! │
└────────────────────────────┘
例外として、正規表現が空の部分文字列に対して機能した場合、置換は複数回行われません。
例:
SELECT replaceRegexpAll('Hello, World!', '^', 'here: ') AS res
┌─res─────────────────┐
│ here: Hello, World! │
└─────────────────────┘
regexpQuoteMeta(s)
関数は、文字列内のいくつかの定義済み文字の前に円記号を追加します。
定義済み文字: ‘0’, ‘\’, ‘|’, ‘(’, ‘)’, ‘^’, ‘$’, ‘.’, ‘[’, ']', ‘?’, '*‘,’+‘,’{‘,’:‘,’-'.
この実装はre2::RE2::QuoteMetaとは若干異なります。 ゼロバイトは00の代わりに\0としてエスケープされ、必要な文字のみがエスケープされます。
詳細は、リンクを参照してください: RE2