ClickHouse/docs/tr/sql_reference/functions/string_functions.md
2020-04-15 16:56:49 +03:00

14 KiB
Raw Blame History

machine_translated machine_translated_rev toc_priority toc_title
true e8cd92bba3 40 Dizeleri ile çalışma

Dizelerle çalışmak için işlevler

boş

Boş bir dize için 1 veya boş olmayan bir dize için 0 döndürür. Sonuç türü Uint8'dir. Bir boşluk veya boş bayt olsa bile, en az bir bayt içeriyorsa, bir dize boş olarak kabul edilir. İşlev ayrıca diziler için de çalışır.

notEmpty

Boş bir dize için 0 veya boş olmayan bir dize için 1 döndürür. Sonuç türü Uint8'dir. İşlev ayrıca diziler için de çalışır.

uzunluk

Bir dizenin uzunluğunu bayt cinsinden döndürür (karakterlerde değil, kod noktalarında değil). Sonuç türü Uint64'tür. İşlev ayrıca diziler için de çalışır.

lengthUTF8

Dizenin UTF-8 kodlanmış metni oluşturan bir bayt kümesi içerdiğini varsayarak, Unicode kod noktalarında (karakterlerde değil) bir dizenin uzunluğunu döndürür. Bu varsayım karşılanmazsa, bir sonuç döndürür (bir istisna atmaz). Sonuç türü Uint64'tür.

char_length, CHAR_LENGTH

Dizenin UTF-8 kodlanmış metni oluşturan bir bayt kümesi içerdiğini varsayarak, Unicode kod noktalarında (karakterlerde değil) bir dizenin uzunluğunu döndürür. Bu varsayım karşılanmazsa, bir sonuç döndürür (bir istisna atmaz). Sonuç türü Uint64'tür.

character_length, CHARACTER_LENGTH

Dizenin UTF-8 kodlanmış metni oluşturan bir bayt kümesi içerdiğini varsayarak, Unicode kod noktalarında (karakterlerde değil) bir dizenin uzunluğunu döndürür. Bu varsayım karşılanmazsa, bir sonuç döndürür (bir istisna atmaz). Sonuç türü Uint64'tür.

alt, lcase

Bir dizedeki ASCII Latin sembollerini küçük harfe dönüştürür.

üst, ucase

Bir dizedeki ASCII Latin sembollerini büyük harfe dönüştürür.

lowerUTF8

Dizenin UTF-8 kodlu bir metni oluşturan bir bayt kümesi içerdiğini varsayarak bir dizeyi küçük harfe dönüştürür. Dili algılamaz. Yani Türkçe için sonuç tam olarak doğru olmayabilir. UTF-8 bayt dizisinin uzunluğu bir kod noktasının büyük ve küçük harf için farklıysa, sonuç bu kod noktası için yanlış olabilir. Dize, UTF-8 olmayan bir bayt kümesi içeriyorsa, davranış tanımsızdır.

upperUTF8

Dize, UTF-8 kodlanmış bir metni oluşturan bir bayt kümesi içerdiğini varsayarak bir dizeyi büyük harfe dönüştürür. Dili algılamaz. Yani Türkçe için sonuç tam olarak doğru olmayabilir. UTF-8 bayt dizisinin uzunluğu bir kod noktasının büyük ve küçük harf için farklıysa, sonuç bu kod noktası için yanlış olabilir. Dize, UTF-8 olmayan bir bayt kümesi içeriyorsa, davranış tanımsızdır.

ısvalidutf8

Bayt kümesi geçerli UTF-8 kodlanmış, aksi takdirde 0 ise, 1 döndürür.

toValidUTF8

Geçersiz UTF-8 karakterlerini değiştirir <EFBFBD> (U+FFFD) karakteri. Bir satırda çalışan tüm geçersiz karakterler bir yedek karaktere daraltılır.

toValidUTF8( input_string )

Parametre:

  • input_string — Any set of bytes represented as the Dize veri türü nesnesi.

Döndürülen değer: geçerli UTF-8 dizesi.

Örnek

SELECT toValidUTF8('\x61\xF0\x80\x80\x80b')
┌─toValidUTF8('a<><61><EFBFBD><EFBFBD>b')─┐
│ a<>b                   │
└───────────────────────┘

tekrarlama

Bir dizeyi belirtilen kadar çok tekrarlar ve çoğaltılmış değerleri tek bir dize olarak birleştirir.

Sözdizimi

repeat(s, n)

Parametre

  • s — The string to repeat. Dize.
  • n — The number of times to repeat the string. Uİnt.

Döndürülen değer

Dize içeren tek dize s tekrarlanan n kez. Eğer n < 1, işlev boş dize döndürür.

Tür: String.

Örnek

Sorgu:

SELECT repeat('abc', 10)

Sonuç:

┌─repeat('abc', 10)──────────────┐
│ abcabcabcabcabcabcabcabcabcabc │
└────────────────────────────────┘

tersi

Dizeyi tersine çevirir (bayt dizisi olarak).

reverseUTF8

Dizenin UTF-8 metnini temsil eden bir bayt kümesi içerdiğini varsayarak bir Unicode kod noktası dizisini tersine çevirir. Aksi takdirde, başka bir şey yapar(bir istisna atmaz).

format(pattern, s0, s1, …)

Bağımsız değişkenlerde listelenen dize ile sabit desen biçimlendirme. pattern basitleştirilmiş bir Python biçimi desenidir. Biçim dizesi içerir “replacement fields” kıvırcık parantez ile çevrili {}. Parantez içinde bulunmayan herhangi bir şey, çıktıya değişmeden kopyalanan hazır metin olarak kabul edilir. Literal metne bir ayraç karakteri eklemeniz gerekiyorsa, iki katına çıkararak kaçabilir: {{ '{{' }} ve {{ '}}' }}. Alan adları sayılar (sıfırdan başlayarak) veya boş olabilir (daha sonra sonuç numaraları olarak kabul edilir).

SELECT format('{1} {0} {1}', 'World', 'Hello')
┌─format('{1} {0} {1}', 'World', 'Hello')─┐
│ Hello World Hello                       │
└─────────────────────────────────────────┘
SELECT format('{} {}', 'Hello', 'World')
┌─format('{} {}', 'Hello', 'World')─┐
│ Hello World                       │
└───────────────────────────────────┘

concat

Bağımsız değişkenlerde listelenen dizeleri ayırıcı olmadan birleştirir.

Sözdizimi

concat(s1, s2, ...)

Parametre

String veya FixedString türünün değerleri.

Döndürülen değerler

Bağımsız değişkenlerin birleştirilmesinden kaynaklanan dizeyi döndürür.

Argüman değerlerinden herhangi biri ise NULL, concat dönüşler NULL.

Örnek

Sorgu:

SELECT concat('Hello, ', 'World!')

Sonuç:

┌─concat('Hello, ', 'World!')─┐
│ Hello, World!               │
└─────────────────────────────┘

concatassumeınjective

Aynı olarak concat emin olun bu ihtiyaç fark var concat(s1, s2, ...) → sn enjekte edilir, grup tarafından optimizasyonu için kullanılacaktır.

İşlev adlı “injective” bağımsız değişkenlerin farklı değerleri için her zaman farklı sonuç döndürürse. Başka bir deyişle: farklı argümanlar asla aynı sonucu vermez.

Sözdizimi

concatAssumeInjective(s1, s2, ...)

Parametre

String veya FixedString türünün değerleri.

Döndürülen değerler

Bağımsız değişkenlerin birleştirilmesinden kaynaklanan dizeyi döndürür.

Argüman değerlerinden herhangi biri ise NULL, concatAssumeInjective dönüşler NULL.

Örnek

Giriş tablosu:

CREATE TABLE key_val(`key1` String, `key2` String, `value` UInt32) ENGINE = TinyLog;
INSERT INTO key_val VALUES ('Hello, ','World',1), ('Hello, ','World',2), ('Hello, ','World!',3), ('Hello',', World!',2);
SELECT * from key_val;
┌─key1────┬─key2─────┬─value─┐
│ Hello,  │ World    │     1 │
│ Hello,  │ World    │     2 │
│ Hello,  │ World!   │     3 │
│ Hello   │ , World! │     2 │
└─────────┴──────────┴───────┘

Sorgu:

SELECT concat(key1, key2), sum(value) FROM key_val GROUP BY concatAssumeInjective(key1, key2)

Sonuç:

┌─concat(key1, key2)─┬─sum(value)─┐
│ Hello, World!      │          3 │
│ Hello, World!      │          2 │
│ Hello, World       │          3 │
└────────────────────┴────────────┘

alt dize (s, ofset, uzunluk), orta (s, ofset, uzunluk), substr (s, ofset, uzunluk)

Bayttan başlayarak bir alt dize döndürür offset ind thatex yani length uzun bayt. Karakter indeksleme birinden başlar (standart SQL'DE olduğu gibi). Bu offset ve length bağımsız değişkenler sabit olmalıdır.

substringUTF8(s, ofset, uzunluk)

Olarak aynı substring, ancak Unicode kod noktaları için. Dizenin UTF-8 kodlanmış bir metni temsil eden bir bayt kümesi içerdiği varsayımı altında çalışır. Bu varsayım karşılanmazsa, bir sonuç döndürür (bir istisna atmaz).

appendTrailingCharİfAbsent (s, c)

Eğer... s dize boş değildir ve c sonunda karakter, ekler c sonuna kadar karakter.

convertCharset (s, from, to)

Dize döndürür s bu kodlamadan dönüştürüldü from kod encodinglamaya to.

base64Encode (s)

Kodluyor s Base64 içine dize

base64Decode (s)

Base64 kodlu dizeyi çözme s orijinal dizeye. Başarısızlık durumunda bir istisna yükseltir.

tryBase64Decode (s)

Base64decode'a benzer, ancak hata durumunda boş bir dize döndürülür.

endsWith (s, sonek)

Belirtilen sonek ile bitip bitmeyeceğini döndürür. Dize belirtilen sonek ile biterse 1 değerini döndürür, aksi takdirde 0 değerini döndürür.

startsWith (str, önek)

Dize belirtilen önek ile başlayıp başlamadığını 1 döndürür, aksi halde 0 döndürür.

SELECT startsWith('Spider-Man', 'Spi');

Döndürülen değerler

  • 1, dize belirtilen önek ile başlarsa.
  • 0, dize belirtilen önek ile başlamazsa.

Örnek

Sorgu:

SELECT startsWith('Hello, world!', 'He');

Sonuç:

┌─startsWith('Hello, world!', 'He')─┐
│                                 1 │
└───────────────────────────────────┘

kırpmak

Belirtilen tüm karakterleri bir dizenin başlangıcından veya sonundan kaldırır. Varsayılan olarak, bir dizenin her iki ucundan ortak boşlukların (ASCII karakteri 32) tüm ardışık tekrarlarını kaldırır.

Sözdizimi

trim([[LEADING|TRAILING|BOTH] trim_character FROM] input_string)

Parametre

  • trim_character — specified characters for trim. Dize.
  • input_string — string for trim. Dize.

Döndürülen değer

Önde gelen ve (veya) belirtilen karakterleri izleyen bir dize.

Tür: String.

Örnek

Sorgu:

SELECT trim(BOTH ' ()' FROM '(   Hello, world!   )')

Sonuç:

┌─trim(BOTH ' ()' FROM '(   Hello, world!   )')─┐
│ Hello, world!                                 │
└───────────────────────────────────────────────┘

trimLeft

Bir dizenin başlangıcından ortak boşluk (ASCII karakteri 32) tüm ardışık tekrarlarını kaldırır. Diğer boşluk karakterlerini (sekme, boşluksuz boşluk, vb.) kaldırmaz.).

Sözdizimi

trimLeft(input_string)

Takma ad: ltrim(input_string).

Parametre

  • input_string — string to trim. Dize.

Döndürülen değer

Bir dize olmadan lider ortak whitespaces.

Tür: String.

Örnek

Sorgu:

SELECT trimLeft('     Hello, world!     ')

Sonuç:

┌─trimLeft('     Hello, world!     ')─┐
│ Hello, world!                       │
└─────────────────────────────────────┘

trimRight

Bir dizenin sonundan ortak boşluk (ASCII karakteri 32) tüm ardışık tekrarlarını kaldırır. Diğer boşluk karakterlerini (sekme, boşluksuz boşluk, vb.) kaldırmaz.).

Sözdizimi

trimRight(input_string)

Takma ad: rtrim(input_string).

Parametre

  • input_string — string to trim. Dize.

Döndürülen değer

Ortak whitespaces firar olmadan bir dize.

Tür: String.

Örnek

Sorgu:

SELECT trimRight('     Hello, world!     ')

Sonuç:

┌─trimRight('     Hello, world!     ')─┐
│      Hello, world!                   │
└──────────────────────────────────────┘

trimBoth

Bir dizenin her iki ucundan ortak boşluk (ASCII karakteri 32) tüm ardışık tekrarlarını kaldırır. Diğer boşluk karakterlerini (sekme, boşluksuz boşluk, vb.) kaldırmaz.).

Sözdizimi

trimBoth(input_string)

Takma ad: trim(input_string).

Parametre

  • input_string — string to trim. Dize.

Döndürülen değer

Bir dize olmadan lider ve sondaki ortak whitespaces.

Tür: String.

Örnek

Sorgu:

SELECT trimBoth('     Hello, world!     ')

Sonuç:

┌─trimBoth('     Hello, world!     ')─┐
│ Hello, world!                       │
└─────────────────────────────────────┘

CRC32 (s)

CRC-32-IEEE 802.3 polinom ve başlangıç değerini kullanarak bir dizenin CRC32 sağlama toplamını döndürür 0xffffffff (zlib uygulaması).

Sonuç türü Uint32'dir.

Crc32ieee (s)

CRC-32-IEEE 802.3 polinomunu kullanarak bir dizenin CRC32 sağlama toplamını döndürür.

Sonuç türü Uint32'dir.

CRC64 (s)

CRC-64-ECMA polinomunu kullanarak bir dizenin CRC64 sağlama toplamını döndürür.

Sonuç türü Uint64'tür.

Orijinal makale