4.4 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | e8cd92bba3 |
42 | Dizelerde değiştirilmesi için |
Dizelerde arama ve değiştirme işlevleri
replaceOne(Samanlık, desen, değiştirme)
Varsa, ilk oluş replacesumun yerini ‘pattern’ substring içinde ‘haystack’ ile... ‘replacement’ dize. Ahiret, ‘pattern’ ve ‘replacement’ sabitleri olması gerekir.
replaceAll (Samanlık, desen, değiştirme), değiştirin (Samanlık, desen, değiştirme)
Tüm oluşumları değiştirir ‘pattern’ substring içinde ‘haystack’ ile... ‘replacement’ dize.
replaceRegexpOne(Samanlık, desen, değiştirme)
Kullanarak değiştirme ‘pattern’ düzenli ifade. Re2 düzenli ifade.
Varsa, yalnızca ilk oluşumu değiştirir.
Bir desen olarak belirtilebilir ‘replacement’. Bu desen değiştirmeleri içerebilir \0-\9
.
İkame \0
tüm düzenli ifadeyi içerir. İkameler \1-\9
alt desene karşılık gelir numbers.To use the \
bir şablondaki karakter, kullanarak kaçış \
.
Ayrıca, bir dize literalinin ekstra bir kaçış gerektirdiğini unutmayın.
Örnek 1. Tarihi Amerikan format convertingına dönüştürme:
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
Örnek 2. Bir dize on kez kopyalama:
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(Samanlık, desen, değiştirme)
Bu aynı şeyi yapar, ancak tüm oluşumların yerini alır. Örnek:
SELECT replaceRegexpAll('Hello, World!', '.', '\\0\\0') AS res
┌─res────────────────────────┐
│ HHeelllloo,, WWoorrlldd!! │
└────────────────────────────┘
Normal bir ifade boş bir alt dize üzerinde çalıştıysa, bir istisna olarak, değiştirme birden çok kez yapılmaz. Örnek:
SELECT replaceRegexpAll('Hello, World!', '^', 'here: ') AS res
┌─res─────────────────┐
│ here: Hello, World! │
└─────────────────────┘
regexpQuoteMeta (s)
İşlev, dizedeki bazı önceden tanımlanmış karakterlerden önce bir ters eğik çizgi ekler. Önceden tanımlanmış karakterler: ‘0’, ‘\’, ‘|’, ‘(’, ‘)’, ‘^’, ‘$’, ‘.’, ‘[’, ']', ‘?’, '*‘,’+‘,’{‘,’:‘,’-'. Bu uygulama biraz re2::RE2::QuoteMeta farklıdır. Sıfır bayttan 00 yerine \0 olarak çıkar ve yalnızca gerekli karakterlerden kaçar. Daha fazla bilgi için bağlantıya bakın: RE2