ClickHouse/docs/ja/sql-reference/functions/string-replace-functions.md

4.5 KiB
Raw Blame History

machine_translated machine_translated_rev toc_priority toc_title
true 72537a2d52 42 文字列で置換する場合

文字列の検索と置換のための関数

replaceOne(干し草、パターン、置換)

それが存在する場合は、最初の出現を置き換えます。 pattern サブストリング haystackreplacement 部分文字列。 以降, patternreplacement 定数である必要があります。

replaceAll(干し草,パターン,置換),replace(干し草,パターン,置換)

すべての出現を置き換えます。 pattern サブストリング haystackreplacement 部分文字列。

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

元の記事