ClickHouse/docs/ru/functions/string_replace_functions.rst
Andrey Dudin 4a24d4f3ad Fixed some ERRORS and WARNINGS during RU docs build. (#772)
* Initial commit if EN docs

* Part of EN documentation

* Full queries section

* External data

* Table engines

* System tables

* Table functions

* Formats

* Data types

* Operators

* Functions

* Dictionaries

* Settings

* Configuration files

* Access rights

* Quotas

* Fixed few formatting errors

* Fixed few formatting errors

* Fixed few formatting errors

* FIX: "WARNING: Title underline too short." during build RU docs.

* FIX: "WARNING: Title underline too short." during build RU docs.
2017-05-08 01:06:04 -04:00

73 lines
4.2 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Функции поиска и замены в строках
---------------------------------
replaceOne(haystack, pattern, replacement)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Замена первого вхождения, если такое есть, подстроки pattern в haystack на подстроку replacement.
Здесь и далее, pattern и replacement должны быть константами.
replaceAll(haystack, pattern, replacement)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Замена всех вхождений подстроки pattern в haystack на подстроку replacement.
replaceRegexpOne(haystack, pattern, replacement)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Замена по регулярному выражению pattern. Регулярное выражение re2.
Заменяется только первое вхождение, если есть.
В качестве replacement может быть указан шаблон для замен. Этот шаблон может включать в себя подстановки ``\0-\9``.
Подстановка ``\0`` - вхождение регулярного выражения целиком. Подстановки ``\1-\9`` - соответствующие по номеру subpattern-ы.
Для указания символа ``\`` в шаблоне, он должен быть экранирован с помощью символа ``\``.
Также помните о том, что строковый литерал требует ещё одно экранирование.
Пример 1. Переведём дату в американский формат:
.. code-block:: sql
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. Размножить строку десять раз:
.. code-block:: sql
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(haystack, pattern, replacement)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
То же самое, но делается замена всех вхождений. Пример:
.. code-block:: sql
SELECT replaceRegexpAll('Hello, World!', '.', '\\0\\0') AS res
res
HHeelllloo,, WWoorrlldd!!
В качестве исключения, если регулярное выражение сработало на пустой подстроке, то замена делается не более одного раза.
Пример:
.. code-block:: sql
SELECT replaceRegexpAll('Hello, World!', '^', 'here: ') AS res
res
here: Hello, World!