14 KiB
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
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
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.