Tüm Ürünler
Search
Belge Merkezi

MaxCompute:Dize İşlevlerine Genel Bakış

Son Güncelleme:Oct 04, 2026

MaxCompute, tablolardaki dize verilerini kırpma, birleştirme, dönüştürme, karşılaştırma ve arama için dize işlevleri sağlar.

MaxCompute SQL aşağıdaki dize işlevlerini destekler.


İşlev


Açıklama


ASCII


Bir dizedeki ilk karakterin ASCII kodunu döndürür.


CHAR_MATCHCOUNT


A dizesindeki B dizesinde görünen karakter sayısını hesaplar.


CHR


Bir ASCII kodunu karaktere dönüştürür.


CONCAT


Dizeleri birleştirir.


CONCAT_WS


Belirtilen bir ayırıcı kullanarak tüm giriş dizelerini birleştirir.


DECODE


Belirtilen kodlama biçimini kullanarak bir dizenin kodunu çözer.


ENCODE


Belirtilen kodlama biçimini kullanarak bir dizeyi kodlar.


FIND_IN_SET


Virgülle ayrılmış bir dizede belirtilen dizenin konumunu bulur.


FORMAT_NUMBER


Bir sayıyı belirtilen biçimde bir dizeye dönüştürür.


FROM_CHARSET


Belirtilen kodlama biçimindeki ikili verileri UTF-8 dizesine dönüştürür.


FROM_JSON


Verilen bir JSON dizesine ve çıkış biçimine göre ARRAY, MAP veya STRUCT türünde veri döndürür.


GET_JSON_OBJECT


Belirtilen bir yöntemi kullanarak standart bir JSON dizesinden belirtilen bir dizeyi ayıklar.


INITCAP


Bir dizeyi başlık durumuna dönüştürür; her kelime büyük harfle başlar ve ardından küçük harfler gelir, kelimeler boşlukla ayrılır.


INSTR


B dizesindeki A dizesinin konumunu bulur.


IS_ENCODING


Bir dizenin A karakter kümesinden B karakter kümesine dönüştürülebilir olup olmadığını belirler.


JSON_TUPLE


Standart bir JSON dizesinden bir grup giriş anahtarına karşılık gelen dizeleri ayıklar.


KEYVALUE


Bir dizeyi anahtar-değer çiftlerine böler, çiftleri ayırır ve belirtilen bir anahtara karşılık gelen değeri döndürür.


KEYVALUE_TUPLE


Bir dizeyi birden çok anahtar-değer çiftine böler, çiftleri ayırır ve birden çok belirtilen anahtara karşılık gelen değerleri döndürür.


LENGTH


Bir dizenin uzunluğunu hesaplar.


LENGTHB


Bir dizenin bayt uzunluğunu hesaplar.


LOCATE


Bir dize içinde belirtilen bir alt dizenin konumunu bulur.


LPAD


Bir dizeyi belirtilen uzunluğa kadar soldan doldurur.


LTRIM


Bir dizenin sol ucundaki karakterleri kaldırır.


MASK_HASH


Bir dize ifadesinden hesaplanan bir karma değerini döndürür.


MD5


Bir dizenin MD5 karmasını hesaplar.


PARSE_URL


Bir URL'yi ayrıştırır ve belirtilen bir bölüm hakkındaki bilgileri döndürür.


PARSE_URL_TUPLE


Bir URL'yi ayrıştırır ve birden çok bölüm hakkındaki bilgileri döndürür.


REGEXP_COUNT


Belirtilen bir konumdan başlayarak belirtilen bir desene uyan alt dizeleri sayar.


REGEXP_EXTRACT


Bir dizeyi belirtilen bir desene göre gruplara böler ve belirtilen gruptaki dizeyi döndürür.


REGEXP_EXTRACT_ALL


Bir dizede normal ifade desenine uyan tüm alt dizeleri bulur ve bunları bir dizi olarak döndürür.


REGEXP_INSTR


Belirtilen bir konumdan başlayarak belirtilen bir oluşum için belirtilen bir desene uyan bir alt dizenin başlangıç veya bitiş konumunu döndürür.


REGEXP_REPLACE


Belirtilen bir oluşum için belirtilen bir desene uyan alt dizeleri başka bir dizeyle değiştirir.


REGEXP_SUBSTR


Belirtilen bir konumdan başlayarak belirtilen bir oluşum için belirtilen bir desene uyan bir alt dizeyi döndürür.


REPEAT


Belirtilen sayıda tekrarlanan bir dizeyi döndürür.


REPLACE


Belirtilen bir dizeyle eşleşen alt dizeleri başka bir dizeyle değiştirir.


REVERSE


Bir dizenin tersini döndürür.


RPAD


Bir dizeyi belirtilen uzunluğa kadar sağdan doldurur.


RTRIM


Bir dizenin sağ ucundaki karakterleri kaldırır.


SOUNDEX


Standart bir dizeyi SOUNDEX dizesine dönüştürür.


SPACE


Boşluklardan oluşan bir dize oluşturur.


SPLIT


Bir dizeyi bir ayırıcı kullanarak böler ve bir dizi döndürür.


SPLIT_PART


Bir dizeyi bir ayırıcı kullanarak böler ve belirtilen bir bölümü döndürür.


SUBSTR


Bir STRING türündeki dizeden belirtilen bir konumdan başlayan ve belirtilen uzunluktaki bir alt dizeyi döndürür.


SUBSTRING


Bir STRING veya BINARY türündeki dizeden belirtilen bir konumdan başlayan ve belirtilen uzunluktaki bir alt dizeyi döndürür.


SUBSTRING_INDEX


Bir ayırıcının belirtilen oluşumundan önce veya sonra bir alt dize ayıklar.


TO_CHAR


Bir BOOLEAN, BIGINT, DECIMAL veya DOUBLE değerini STRING gösterimine dönüştürür.


TO_JSON


Belirtilen bir karmaşık türü JSON dizesine dönüştürür.


TOLOWER


Bir dizedeki İngilizce büyük harfleri küçük harfe dönüştürür.


TOUPPER


Bir dizedeki İngilizce küçük harfleri büyük harfe dönüştürür.


TRANSLATE


B dizesindeki A dizesinin tüm oluşumlarını C dizesiyle değiştirir.


TRIM


Bir dizenin her iki ucundaki karakterleri kaldırır.


URL_DECODE


Bir dizeyi application/x-www-form-urlencoded MIME biçiminden standart karakterlere dönüştürür.


URL_ENCODE


Bir dizeyi application/x-www-form-urlencoded MIME biçiminde kodlar.

Kullanım notları

MaxCompute V2.0 ek işlevler sağlar. Kullandığınız işlevler MaxCompute V2.0 veri türü sürümünde desteklenen yeni veri türlerini içeriyorsa, MaxCompute V2.0 veri türü sürümünü etkinleştirmek için SET ifadesini çalıştırmanız gerekir. Yeni veri türleri arasında TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP ve BINARY bulunur.

  • Oturum düzeyi: MaxCompute V2.0 veri türü sürümünü kullanmak için, çalıştırmak istediğiniz SQL ifadesinden önce set odps.sql.type.system.odps2=true; eklemeli ve bunları birlikte gönderip çalıştırmalısınız.

  • Proje düzeyi: Proje sahibi, proje gereksinimlerine bağlı olarak proje için MaxCompute V2.0 veri türü sürümünü etkinleştirebilir. Yapılandırma 10 ila 15 dakika sonra etkili olur. Proje düzeyinde MaxCompute V2.0 veri türü sürümünü etkinleştirmek için aşağıdaki komutu çalıştırın:

    setproject odps.sql.type.system.odps2=true; 

    setproject hakkında daha fazla bilgi için bkz. Proje işlemleri. Proje düzeyinde MaxCompute V2.0 veri türü sürümünü etkinleştirirken almanız gereken önlemler hakkında daha fazla bilgi için bkz. Veri türü sürüm kılavuzu.

Sınırlamalar

Aşağıdaki işlevler yalnızca İngilizce karakterleri destekler:

  • TRIM/RTRIM/LTRIM: trimChars parametresi yalnızca İngilizce karakterleri destekler.

  • REVERSE: Hive modunda yalnızca İngilizce karakterleri destekler.

  • SOUNDEX: Yalnızca İngilizce karakterleri dönüştürür.

  • TOLOWER: Bir dizedeki İngilizce büyük harfleri küçük harfe dönüştürür.

  • TOUPPER: Bir dizedeki İngilizce küçük harfleri büyük harfe dönüştürür.

  • INITCAP: Her kelimenin ilk İngilizce harfini büyük harfe, geri kalanını küçük harfe dönüştürür.

ASCII

  • Sözdizimi

    bigint ascii(string <str>)
  • Açıklama

    str dizesindeki ilk karakterin ASCII kodunu döndürür.

  • Parametreler

    str: gerekli. STRING türü. Giriş BIGINT, DOUBLE, DECIMAL veya DATETIME türündeyse, hesaplamadan önce örtük olarak STRING türüne dönüştürülür.

  • Dönüş değeri

    BIGINT türünde bir değer döndürür. Dönüş değeri şu kuralları izler:

    • str STRING, BIGINT, DOUBLE, DECIMAL veya DATETIME türünde değilse hata döndürülür.

    • str NULL ise NULL döndürülür.

  • Örnekler

    • Örnek 1: abcde dizesindeki ilk karakterin ASCII kodunu döndürün. Örnek ifade:

      -- Returns 97.
      select ascii('abcde'); 
    • Örnek 2: Giriş parametresi NULL'dur. Örnek ifade:

      -- Returns NULL.
      select ascii(null);

CHAR_MATCHCOUNT

  • Sözdizimi

    bigint char_matchcount(string <str1>, string <str2>)
  • Açıklama

    str1 içindeki kaç karakterin str2 içinde göründüğünü hesaplar.

  • Parametreler

    str1 ve str2: gerekli. STRING türü. Her iki dize de geçerli UTF-8 dizeleri olmalıdır. Karşılaştırma sırasında geçersiz karakterler (Unicode kodlamalı olmayan) bulunursa negatif bir değer döndürülür.

  • Dönüş değeri

    BIGINT türünde bir değer döndürür. str1 veya str2 NULL ise NULL döndürülür.

  • Örnekler

    • Örnek 1: aabc dizesindeki kaç karakterin abcde içinde göründüğünü hesaplayın. Örnek ifade:

      -- Returns 4.
      select char_matchcount('aabc','abcde');
    • Örnek 2: Bir giriş parametresi NULL'dur. Örnek ifade:

      -- Returns NULL.
      select char_matchcount(null,'abcde');

CHR

  • Sözdizimi

    string chr(bigint <ascii>)
  • Açıklama

    Belirtilen bir ASCII kodunu karaktere dönüştürür.

  • Parametreler

    ascii: gerekli. BIGINT türü ASCII değeri. Geçerli değerler: 0 ila 127. Giriş STRING, DOUBLE veya DECIMAL türündeyse, hesaplamadan önce örtük olarak BIGINT türüne dönüştürülür.

  • Dönüş değeri

    STRING türünde bir değer döndürür. Dönüş değeri şu kuralları izler:

    • ascii değeri geçerli aralığın dışındaysa hata döndürülür.

    • ascii BIGINT, STRING, DOUBLE veya DECIMAL türünde değilse hata döndürülür.

    • ascii NULL ise NULL döndürülür.

  • Örnekler

    • Örnek 1: 100 ASCII kodunu karaktere dönüştürün. Örnek ifade:

      -- Returns d.
      select chr(100);
    • Örnek 2: Giriş parametresi NULL'dur. Örnek ifade:

      -- Returns NULL.
      select chr(null);
    • Örnek 3: Giriş STRING türünde bir karakterdir. Örnek ifade:

      --The input is implicitly converted to the BIGINT type for the operation, which returns 'd'.
      select chr('100');

CONCAT

  • Sözdizimi

    array<T> concat(array<T> <a>, array<T> <b>[,...])
    string concat(string <str1>, string <str2>[,...])
  • Açıklama

    • Girişler olarak diziler: Birden çok dizinin tüm öğelerini birleştirir ve yeni bir dizi döndürür.

    • Girişler olarak dizeler: Birden çok dizeyi birleştirir ve yeni bir dize döndürür.

  • Parametreler

    • a ve b: gerekli. Bu parametreler dizileri belirtir. T içindeki array<T> dizilerdeki öğelerin veri türünü belirtir. Öğeler herhangi bir veri türünde olabilir. Dizi a içindeki öğeler ile Dizi b içindeki öğeler aynı veri türünde olmalıdır. Null öğeler de işleme dahil edilir.

    • str1 ve str2: gerekli. STRING türünde değerler. Giriş değerleri BIGINT, DOUBLE, DECIMAL veya DATETIME türündeyse, hesaplamadan önce örtük olarak STRING türüne dönüştürülür. Giriş değerleri başka veri türlerindense hata döndürülür.

  • Dönüş değeri

    • ARRAY türünde bir değer döndürülür. Giriş dizilerinden biri null ise null döndürülür.

    • STRING türünde bir değer döndürülür. Hiçbir giriş parametresi yapılandırılmamışsa veya bir giriş parametresi null olarak ayarlanmışsa null döndürülür.

  • Örnekler

    • Örnek 1: array(10, 20) ve array(20, -20) içindeki tüm öğeleri birleştirin. Örnek ifade:

      -- The return value is [10, 20, 20, -20]. 
      select concat(array(10, 20), array(20, -20));
    • Örnek 2: Giriş dizilerinden biri null öğe içeriyor. Örnek ifade:

      -- The return value is [10, null, 20, -20]. 
      select concat(array(10, null), array(20, -20));
    • Örnek 3: Giriş dizilerinden biri null. Örnek ifade:

      -- The return value is null. 
      select concat(array(10, 20), null);
    • Örnek 4: aabc ve abcde dizelerini birleştirin. Örnek ifade:

      -- The return value is aabcabcde. 
      select concat('aabc','abcde');
    • Örnek 5: Giriş boş. Örnek ifade:

      -- The return value is null. 
      select concat();
    • Örnek 6: Giriş dizelerinden biri null. Örnek ifade:

      -- The return value is null. 
      select concat('aabc', 'abcde', null);

CONCAT_WS

  • Sözdizimi

    string concat_ws(string <separator>, string <str1>, string <str2>[,...])
    string concat_ws(string <separator>, array<string> <a>)
  • Açıklama

    Belirtilen ayırıcıyı kullanarak tüm giriş dizelerini veya dizi öğelerini birleştirerek oluşturulan bir dizeyi döndürür. Bu işlev MaxCompute V2.0'da bir uzantıdır.

  • Parametreler

    • separator: gerekli. STRING türü ayırıcı.

    • str1 ve str2: En az iki dize belirtilmelidir. STRING türü. Giriş BIGINT, DECIMAL, DOUBLE veya DATETIME türündeyse, hesaplamadan önce örtük olarak STRING türüne dönüştürülür.

    • a: gerekli. ARRAY türü. Dizi öğeleri STRING türünde olmalıdır.

  • Dönüş değeri

    STRING veya STRUCT türünde bir değer döndürür. Dönüş değeri şu kuralları izler:

    • str1 veya str2 STRING, BIGINT, DECIMAL, DOUBLE veya DATETIME türünde değilse hata döndürülür.

    • Hiçbir giriş parametresi sağlanmamışsa veya herhangi bir giriş parametresi NULL ise NULL döndürülür.

  • Örnekler

    • Örnek 1: name ve hanmeimei dizelerini : kullanarak birleştirin. Örnek ifade:

      -- Returns name:hanmeimei.
      select concat_ws(':','name','hanmeimei');

      -

    • Örnek 2: Bir giriş parametresi NULL'dur. Örnek ifade:

      -- Returns NULL.
      select concat_ws(':','avg',null,'34');
    • Örnek 3: array('name', 'hanmeimei') dizisindeki öğeleri : kullanarak birleştirin. Örnek ifade:

      -- Returns name:hanmeimei.
      select concat_ws(':',array('name', 'hanmeimei'));

DECODE

  • Sözdizimi

    STRING DECODE(BINARY <str>, STRING <charset>)
  • Açıklama

    str değerini charset tarafından belirtilen biçimi kullanarak kodunu çözer.

  • Parametreler

    Parametre

    Gerekli

    Açıklama

    str

    Evet

    BINARY türü. Kodu çözülecek dize.

    charset

    Evet

    STRING türü. Kodlama biçimi. Geçerli değerler: UTF-8, UTF-16, UTF-16LE, UTF-16BE, ISO-8859-1, US-ASCII.

    Not

    ISO-8859-1 ve US-ASCII kodlama biçimleri şu anda yalnızca İngilizce karakterleri destekler, Çince karakterleri desteklemez.

  • Dönüş değeri

    STRING döndürür. str veya charset NULL ise NULL döndürülür.

  • Örnekler

    • Örnek 1: English Sample dizesini UTF-8 biçimine göre kodlayın ve kodunu çözün. Örnek ifade:

      -- Encode and decode the string.SELECT DECODE(ENCODE("English Sample","UTF-8"), "UTF-8");

      Şunu döndürür:

      +-----+| _c0 |+-----+| English Sample |+-----+
    • Örnek 2: Giriş parametrelerinden birini NULL olarak ayarlayın. Örnek ifade:

      SELECT DECODE(ENCODE("English Sample","UTF-8"), NULL);

      Şunu döndürür:

      +-----+| _c0 |+-----+| NULL |+-----+

ENCODE

  • Sözdizimi

    binary encode(string <str>, string <charset>)
  • Açıklama

    str değerini charset tarafından belirtilen biçimi kullanarak kodlar.

  • Parametreler

    • str: gerekli. STRING türü. Yeniden kodlanacak dize.

    • charset: gerekli. STRING türü. Kodlama biçimi. Geçerli değerler: UTF-8, UTF-16, UTF-16LE, UTF-16BE, ISO-8859-1, US-ASCII.

  • Dönüş değeri

    BINARY türü döndürür. str veya charset NULL ise NULL döndürülür.

  • Örnekler

    • Örnek 1: abc dizesini UTF-8 biçiminde kodlayın. Örnek ifade:

      -- Returns abc.
      select encode("abc", "UTF-8");
    • Örnek 2: abc dizesini UTF-16BE biçiminde kodlayın. Örnek ifade:

      -- Returns =00a=00b=00c.
      select encode("abc", "UTF-16BE");
    • Örnek 3: Bir giriş parametresi NULL'dur. Örnek ifade:

      -- Returns NULL.
      select encode("abc", null);

FIND_IN_SET

  • Sözdizimi

    BIGINT FIND_IN_SET(STRING <str1>, STRING <str2>[, STRING <delimiter>])
  • Açıklama

    delimiter ile ayrılmış str2 dizesindeki str1 dizesinin konumunu 1'den başlayarak bulur.

  • Parametreler


    Parametre


    Gerekli


    Açıklama


    str1


    Evet


    STRING türü. Aranacak dize.


    str2


    Evet


    STRING türü. delimiter ile ayrılmış dize.


    delimiter


    Hayır


    STRING sabiti. Varsayılan virgüldür (,). Ayırıcı tek bir karakter veya bir dize olabilir.

  • Dönüş değeri

    BIGINT türü döndürür. Dönüş değeri şu kuralları izler:

    • str2 str1 içermiyorsa veya str1 delimiter içeriyorsa 0 döndürülür.

    • str1 veya str2 NULL ise NULL döndürülür.

  • Örnekler

    • Örnek 1: Virgülle (,) ayrılmış abc,hello,ab,c dizesindeki ab dizesinin konumunu bulun. Örnek ifade:

      SELECT FIND_IN_SET('ab', 'abc,hello,ab,c') AS pos;

      Şunu döndürür:

      +------------+
      | pos        |
      +------------+
      | 3          |
      +------------+
    • Örnek 2: Virgülle (,) ayrılmış abc,hello,ab,c dizesindeki hi dizesinin konumunu bulun. Örnek ifade:

      SELECT FIND_IN_SET('hi', 'abc,hello,ab,c') AS pos;

      Şunu döndürür:

      +------------+
      | pos        |
      +------------+
      | 0          |
      +------------+
    • Örnek 3: Alt çizgiyle (_) ayrılmış abc_hello_ab_c dizesindeki ab dizesinin konumunu bulun. Örnek ifade:

      SELECT FIND_IN_SET('ab', 'abc_hello_ab_c', '_') AS pos;

      Şunu döndürür:

      +------------+
      | pos        |
      +------------+
      | 3          |
      +------------+
    • Örnek 4: Giriş parametresi str1 veya str2 NULL değerindedir. Örnek ifade:

      SELECT FIND_IN_SET(null, 'abc,hello,ab,c') AS pos;

      Şunu döndürür:

      +------------+
      | pos        |
      +------------+
      | NULL       |
      +------------+

FORMAT_NUMBER

  • Sözdizimi

    STRING FORMAT_NUMBER(DOUBLE|BIGINT|INT|SMALLINT|TINYINT|FLOAT|DECIMAL|STRING <expr1>, INT <expr2>)
  • Açıklama

    expr1 değerini, expr2 parametresine göre biçimlendirilmiş bir dizeye dönüştürür.

  • Parametreler

  • expr1: Gereklidir. FLOAT, DOUBLE veya DECIMAL türünde bir değerdir. Bu parametre, biçimlendirmek istediğiniz ifadeyi belirtir.

  • expr2: Gereklidir. INT türünde bir değerdir. Geçerli değer aralığı 0 ile 340 arasındadır. Bu parametre, korunacak ondalık basamak sayısını belirtir. Bu parametre, #,###,###.## gibi bir biçimde de ifade edilebilir. Döndürülen ondalık basamak sayısı bu parametrenin değerine göre değişir.

  • Dönüş değeri

    STRING türünde bir değer döndürülür. Dönüş değeri aşağıdaki kurallara göre değişir:

    • expr2 değeri 0'dan büyük ve 340'a eşit veya küçükse, belirtilen ondalık basamak sayısına yuvarlanmış bir değer döndürülür.

    • expr2 değeri 0 ise, dönüş değeri yalnızca tamsayı kısmını içerir; ondalık nokta veya ondalık kısım içermez.

    • expr2 değeri 0'dan küçük veya greater than 340 ise hata döndürülür.

    • expr1 veya expr2 boşsa veya null olarak ayarlandıysa null döndürülür.

  • Örnekler

    • Örnek 1: Bir sayıyı belirtilen şekilde biçimlendirin. Örnek ifadeler:

      -- Returns 5.230.
      SELECT FORMAT_NUMBER(5.230134523424545456,3);
      -- Returns 12,332.123.
      SELECT FORMAT_NUMBER(12332.123456, '#,###,###,###.###');
    • Örnek 2: Giriş parametrelerinden biri boş veya NULL'dur. Örnek ifadeler:

      -- Returns NULL.
      SELECT FORMAT_NUMBER('',3);
      -- Returns NULL.
      SELECT FORMAT_NUMBER(null,3);

FROM_CHARSET

  • Sözdizimi

    STRING FROM_CHARSET(binary <source>, string <source_charset>, [string <mode>])
  • Açıklama

    FROM_CHARSET, UTF-8 olmayan kodlamalı ikili verileri sonraki hesaplamalar için UTF-8 dizesine dönüştürür.

  • Parametreler

    • source: Gereklidir. BINARY türünde bir değerdir. Bu parametre, dönüştürmek istediğiniz ikili verileri belirtir.

    • source_charset: Gereklidir. STRING türünde bir değerdir. Bu parametre, source tarafından belirtilen ikili verilerin orijinal kodlama biçimini belirtir. Geçerli değerler: UTF-8, UTF-16, UTF-16LE, UTF-16BE, ISO-8859-1, US-ASCII, GB2312, GBK ve GB18030.

    • mode: İsteğe bağlıdır. STRING türünde bir değerdir. Bu parametre, FROM_CHARSET işlevi source tarafından belirtilen ikili verileri belirtilen kodlama biçimindeki bir dizeye dönüştürürken bir karakter dönüştürülemediğinde uygulanacak işlem modunu belirtir. Geçerli değerler:

      • NONE: Hata bildirir. Herhangi bir işlem gerçekleştirilmez. Bu varsayılan değerdir.

      • TRANSLIT: Karakteri, belirtilen kodlama biçimindeki benzer bir karakterle değiştirir.

      • IGNORE: Hatayı yok sayar ve komutu çalıştırmaya devam eder.

  • Dönüş değeri

    UTF-8 kodlamalı STRING türünde bir değer döndürür. Parametreler NULL veya boş dize olduğunda dönüş değeri şu kuralları izler:

    • Giriş parametrelerinden herhangi biri NULL ise NULL döndürülür.

    • Giriş parametrelerinden herhangi biri boş dize ise hata döndürülür.

  • Örnekler

    • Örnek 1: UTF-8 kodlamalı ikili verileri UTF-8 kodlamalı bir dizeye dönüştürün.

      SELECT FROM_CHARSET(unhex('e58aa0e6b2b9e9949fe696a4e68bb70a'),'UTF-8', 'TRANSLIT');
    • Örnek 2: GBK kodlamalı ikili verileri UTF-8 kodlamalı bir dizeye dönüştürün.

      SELECT FROM_CHARSET(unhex('b9feb9febac3a4ce'), 'GBK');
    • Örnek 3: Giriş parametresi null ise null döndürülür.

      SELECT FROM_CHARSET(unhex('b9feb9febac3a4ce'), null);

FROM_JSON

  • Sözdizimi

    from_json(<jsonStr>, <schema>)
  • Açıklama

    JSON dizesi jsonStr ve çıkış biçimi schema temel alınarak ARRAY, MAP veya STRUCT türünde veri döndürür.

  • Parametreler

    • jsonStr: Gereklidir. Girdiğiniz JSON dizesidir.

    • schema: Gereklidir. JSON dizesinin şemasıdır. Bu parametrenin değeri, tablo oluşturma ifadesindekiyle aynı biçimde olmalıdır; örneğin array<bigint>, map<string, array<string>> veya struct<a:int, b:double, .

      Not

      Bir struct içindeki anahtarlar büyük/küçük harfe duyarlıdır. Bir struct'ı a BIGINT, b DOUBLE biçiminde de belirtebilirsiniz; bu, STRUCT<a:BIGINT, b:DOUBLE> ile eşdeğerdir.

      Aşağıdaki tabloda JSON veri türleri ile MaxCompute veri türleri arasındaki eşlemeler açıklanmaktadır.


      JSON veri türü


      MaxCompute veri türü


      OBJECT


      STRUCT, MAP ve STRING


      ARRAY


      ARRAY ve STRING


      NUMBER


      TINYINT, SMALLINT, INT, BIGINT, FLOAT, DOUBLE, DECIMAL ve STRING


      BOOLEAN


      BOOLEAN ve STRING


      STRING


      STRING, CHAR, VARCHAR, BINARY, DATE ve DATETIME


      NULL


      Tüm türler

      Not

      OBJECT ve ARRAY türündeki JSON dizeleri mümkün olduğunca ayrıştırılır. JSON dizesinin veri türü herhangi bir MaxCompute veri türüyle eşleşmiyorsa JSON dizesi atlanır. Kullanım kolaylığı sağlamak için tüm JSON veri türleri MaxCompute tarafından desteklenen STRING veri türüne dönüştürülebilir. NUMBER türündeki bir JSON dizesini FLOAT, DOUBLE veya DECIMAL türünde bir değere dönüştürürken değerin hassasiyeti garanti edilemez. JSON dizesini önce STRING türüne dönüştürmeniz, ardından elde edilen değeri FLOAT, DOUBLE veya DECIMAL türünde bir değere dönüştürmeniz önerilir.

  • Dönüş değeri

    ARRAY, MAP veya STRUCT türünde bir değer döndürülür.

  • Örnekler

    • Örnek 1: Belirli bir JSON dizesini belirli bir veri türünde bir değere dönüştürün. Örnek ifade:

      -- The return value is {"a":1,"b":0.8}. 
      select from_json('{"a":1, "b":0.8}', 'a int, b double');
      -- The return value is {"time":"26/08/2015"}. 
      select from_json('{"time":"26/08/2015"}', 'time string');
      -- The return value is {"a":1,"b":0.8}. 
      select from_json('{"a":1, "b":0.8}', 'a int, b double, c string');
      -- The return value is [1,2,3]. 
      select from_json('[1, 2, 3, "a"]', 'array<bigint>');
      -- The return value is {"d":"v","a":"1","b":"[1,2,3]","c":"{}"}. 
      select from_json('{"a":1,"b":[1,2,3],"c":{},"d":"v"}', 'map<string, string>');
    • Örnek 2: Bir JSON dizesindeki tüm anahtarları almak için map_keys ve from_json işlevlerini kullanın. Aynı amaçla JSON_KEYS de kullanabilirsiniz. Örnek ifade:

      -- The return value is ["a","b"]. 
      select map_keys(from_json('{"a":1,"b":2}','map<string,string>'));

GET_JSON_OBJECT

  • Sözdizimi

    STRING GET_JSON_OBJECT(JSON|STRING <json>, STRING <json_path>)
    
    -- Example: Returns Alice.
    SELECT GET_JSON_OBJECT(JSON '{"name": "Alice", "age": 30}', '$.name');
  • Açıklama

    GET_JSON_OBJECT işlevi, belirtilen JSON yolu json_path temel alınarak bir JSON dizesinden veya JSON veri türünde bir değerden bir dize ayıklar.

  • Kullanım notları

    • GET_JSON_OBJECT işlevi, JSON yollarında normal ifade sözdizimini desteklemez.

    • Yeni JSON veri türü için kullanılan JSON yolu sözdizimi, orijinal belirtimden farklıdır. Bu durum uyumluluk sorunlarına neden olabilir.

    • Bir sorgu, aynı JSON verilerini işleyen birden çok GET_JSON_OBJECT işlevi içeriyorsa işlev aynı JSON dizesini tekrar tekrar ayrıştırır. Bu durum performansı olumsuz etkileyebilir ve maliyetleri artırabilir. Bundan kaçınmak için JSON günlük verilerini dönüştürmek amacıyla GET_JSON_OBJECT işlevini kullanıcı tanımlı tablo değerli bir işlev (UDTF) ile birlikte kullanabilirsiniz.

  • Parametreler

    • json: Gereklidir. İşlemek istediğiniz JSON verileridir. Bu parametre iki giriş türünü destekler: JSON ve STRING.

      • JSON türü: JSON veri türünde bir değerdir. Değer {"Key":"Value", "Key":"Value",...} biçiminde olmalıdır; örneğin JSON '{"name": "Alice", "age": 30}'.

      • STRING türü: Giriş bir STRING ise aşağıdaki biçim gereksinimlerini karşılamalıdır:

        • Dize '{"Key":"Value", "Key":"Value",...}' biçiminde olmalıdır; örneğin '{"name": "Alice", "age": 30}'.

        • Çift tırnak işareti (") iki ters eğik çizgi (\\) ile kaçış karakteri olarak işaretlenmelidir.

        • Tek tırnak işareti (') bir ters eğik çizgi (\) ile kaçış karakteri olarak işaretlenmelidir.

    • json_path: Gereklidir. Veri ayıklamak için kullanılan JSON yolu ifadesini belirten bir STRING'dir. Yol $ karakteriyle başlamalıdır; örneğin $.aliyun.test[0].demo. Yol ifadesi aşağıdaki karakterleri kullanır:

      • $: Kök düğümü gösterir.

      • . veya ['']: Alt düğümü gösterir. Bu, $.store.book gibi JSON nesnelerini ayrıştırmak için kullanılır. Bir JSON anahtarı nokta (.) içeriyorsa bunun yerine [''] kullanabilirsiniz.

        [''] kullanılarak veri ayıklama yalnızca SET odps.sql.udf.getjsonobj.new=true; ifadesini çalıştırdığınızda desteklenir.

      • []: [number] bir dizi alt simgesini gösterir. Alt simge 0'dan başlar.

      • *: [] için bir joker karakterdir. Tüm diziyi döndürür. Yıldız işareti (*) kaçış karakteri olarak işaretlenemez.

  • Dönüş değeri

    STRING türünde bir değer döndürür. Bu değer, belirtilen yoldan ayıklanan veridir. İşlev dönüş değeri için şu kuralları izler:

    • json geçerliyse ve json_path mevcutsa ilgili dize döndürülür.

    • json boşsa veya geçersiz biçime sahipse NULL döndürülür.

    • json_path [*] içeriyorsa dönüş değeri dizi biçiminde değildir. Dönüş değerinin统一 bir dizi biçiminde olmasını zorlamak için SET odps.sql.force.getjsonobj.array.format=true; ifadesini çalıştırabilirsiniz.

    • json_path geçersizse NULL döndürülür.

    Dönüş davranışı

    • İşlevin dönüş davranışını aşağıdaki komutla proje düzeyinde veya oturum düzeyinde bayrak ayarlayarak kontrol edebilirsiniz: SET odps.sql.udf.getjsonobj.new=true/false;.

      Farklı bayrak ayarlarına karşılık gelen iki dönüş davranışı aşağıdaki gibidir:

      Önemli

      SET odps.sql.udf.getjsonobj.new=true; yapılandırmasını kullanmanız önerilir. Bu yapılandırma daha standart bir işlev davranışı sağlar, veri işlemeyi basitleştirir ve performansı artırır. MaxCompute projenizde JSON ayrılmış karakterlerinin kaçış karakteri olarak işaretlenmesi davranışına dayanan mevcut işler varsa özgün davranışı kullanmaya devam etmeniz önerilir. Bu, yeni davranışa doğrulama yapmadan geçiş yaptığınızda oluşabilecek hataları veya doğruluk sorunlarını önler.

      Parametre Ayarları

      SET odps.sql.udf.getjsonobj.new=true;

      SET odps.sql.udf.getjsonobj.new=false;

      Dönüş davranışı

      Orijinal dizeyi değiştirmeden çıkarır.

      JSON ayrılmış karakterleri kaçış karakteri olarak işaretlenmiş şekilde dizeyi çıkarır.

      Dönüş değeri, doğrudan ayrıştırılabilen bir JSON dizesidir. Ters eğik çizgileri değiştirmek için REPLACE veya REGEXP_REPLACE gibi işlevleri kullanmanıza gerek yoktur.

      Satır sonları (\n) ve tırnak işaretleri (") gibi JSON ayrılmış karakterleri '\n' ve '\"' dizeleri olarak döndürülür.

      Yinelenen anahtar ayrıştırma

      Bir JSON nesnesi yinelenen anahtarlar içerebilir ve bunlar başarıyla ayrıştırılabilir.

      -- Returns 1.
      SELECT GET_JSON_OBJECT('{"a":"1","a":"2"}', '$.a');

      Bir JSON nesnesi yinelenen anahtarlar içeremez. İçerirse ayrıştırma başarısız olabilir.

      -- Returns NULL.
          SELECT GET_JSON_OBJECT('{"a":"1","a":"2"}', '$.a');

      Çıkış sıralama düzeni

      Çıkış, özgün JSON dizesiyle aynı sırada sıralanır.

      -- Returns {"b":"1","a":"2"}.
      SELECT GET_JSON_OBJECT('{"b":{"b":"1","a":"2"},"a":"2"}', '$.b');

      Çıkış alfabetik sıraya göre sıralanır.

      -- Returns {"a":"2","b":"1"}.
          SELECT GET_JSON_OBJECT('{"b":{"b":"1","a":"2"},"a":"2"}', '$.b');

    • Hive uyumluluk modu SET odps.sql.hive.compatible=true; komutuyla etkinleştirilirse GET_JSON_OBJECT işlevi dönüş değerinde özgün dizeleri korur.

    • 21 Ocak 2021 tarihinde veya sonrasında oluşturulan MaxCompute projeleri için GET_JSON_OBJECT işlevinin varsayılan dönüş davranışı özgün dizeleri korumaktır.

    • 21 Ocak 2021 tarihinden önce oluşturulan MaxCompute projeleri için GET_JSON_OBJECT işlevinin varsayılan dönüş davranışı JSON ayrılmış karakterlerini kaçış karakteri olarak işaretlemektir.

    • MaxCompute projenizde GET_JSON_OBJECT işlevinin hangi davranışı kullandığını belirlemek için aşağıdaki örneği kullanabilirsiniz. Bunun için aşağıdaki komutu çalıştırın:

      SELECT GET_JSON_OBJECT('{"a":"[\\"1\\"]"}', '$.a');
      --The return value if the behavior is to escape JSON reserved characters:
      [\"1\"]
      
      --The return value if the behavior is to preserve original strings:
      ["1"]
      Projenizdeki GET_JSON_OBJECT işlevinin varsayılan dönüş davranışını özgün dizeleri koruyacak şekilde değiştirmek için bir destek talebi gönderebilirsiniz. Bu, her oturum için özelliği oturum düzeyinde ayarlama gereksinimini ortadan kaldırır.
  • Örnekler

    JSON giriş parametresi

    Örnek 1: JSON verilerinden belirli anahtarlar için değerleri alın

    -- Returns 1.
    SELECT GET_JSON_OBJECT(JSON '{"a":1, "b":2}', '$.a');
    
    -- Returns NULL.
    SELECT GET_JSON_OBJECT(JSON '{"a":1, "b":2}', '$.c');

    Geçersiz bir json_path NULL döndürür.

    -- Returns NULL.
    SELECT GET_JSON_OBJECT(JSON '{"a":1, "b":2}', '$invalid_json_path');

    STRING giriş parametresi

    src_json.json JSON nesnesinden bilgileri ayıklayın

    -- Prepare the test data.
    CREATE TABLE IF NOT EXISTS src_json (
        json STRING
    );
    
    INSERT OVERWRITE TABLE src_json
    VALUES
    ('{"store":
      {"fruit":[{"weight":8,"type":"apple"},
        {"weight":9,"type":"pear"}],
         "bicycle":{"price":19.95,
         "color":"red"}},
       "email":"amy@only_for_json_udf_test.net",
       "owner":"amy"}');
    
    -- Extract the information of the owner field. The return value is amy.
    SELECT GET_JSON_OBJECT(src_json.json, '$.owner') FROM src_json;
    
    -- Optional. Output by preserving the original string.
    SET odps.sql.udf.getjsonobj.new=true;
    -- Extract the information of the first array in the store.fruit field. The return value is {"weight":8,"type":"apple"}.
    SELECT GET_JSON_OBJECT(src_json.json, '$.store.fruit[0]') FROM src_json;
    
    -- Extract the information of a non-existent field. The return value is NULL.
    SELECT GET_JSON_OBJECT(src_json.json, '$.non_exist_key') FROM src_json;

    JSON dizi verilerinden bilgileri ayıklayın

    -- Returns 2222.
    SELECT GET_JSON_OBJECT('{"array":[["aaaa",1111],["bbbb",2222],["cccc",3333]]}','$.array[1][1]');
    
    -- Output by preserving the original string.
    SET odps.sql.udf.getjsonobj.new=true;
    -- Returns ["h0","h1","h2"].
    SELECT GET_JSON_OBJECT('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[*]');
    
    -- Output by escaping JSON reserved characters.
    SET odps.sql.udf.getjsonobj.new=false;
    -- Returns ["h0","h1","h2"].
    SELECT GET_JSON_OBJECT('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[*]');
    
    -- Returns h1.
    SELECT GET_JSON_OBJECT('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[1]');

    Anahtarda nokta (.) içeren JSON verilerinden bilgileri ayıklayın

    -- Prepare the test data.
    CREATE TABLE json_test (id STRING, json STRING);
    
    -- Insert data where the key contains a period (.).
    INSERT INTO TABLE json_test (id, json) VALUES 
    ("1", 
      "{
        \"China.beijing\":
          {\"school\":
            {\"id\":0,\"book\":
              [{\"title\": \"A\",\"price\": 8.95},
               {\"title\": \"B\",\"price\": 10.2}]
            }
          }
      }"
    );
    
    -- Insert data where the key does not contain a period (.).
    INSERT INTO TABLE json_test (id, json) VALUES 
    ("2", 
      "{
        \"China_beijing\":
          {\"school\":
            {\"id\":0,\"book\":
              [{\"title\": \"A\",\"price\": 8.95},
               {\"title\": \"B\",\"price\": 10.2}]
            }
          }
      }"
    );
    
    -- Use square brackets [''] to parse data that contains a period (.).
    -- This extracts the 'id' value under 'China.beijing'. The return value is 0.
    SELECT GET_JSON_OBJECT(json, "$['China.beijing'].school['id']") FROM json_test WHERE id =1;
    
    -- For data without special characters, both '.' and [''] are valid and equivalent.
    -- This extracts the 'id' value under 'China_beijing'. The return value is 0.
    SELECT GET_JSON_OBJECT(json, "$['China_beijing'].school['id']") FROM json_test WHERE id =2;
    SELECT GET_JSON_OBJECT(json, "$.China_beijing.school['id']") FROM json_test WHERE id =2;

    **Nokta (.) içeren anahtarlar için **[''] kullanın

    SET odps.sql.udf.getjsonobj.new=true;
    
    -- Returns 1.
    SELECT GET_JSON_OBJECT('{"a.1":"1","a":"2"}', '$[\'a.1\']');

    Boş veya geçersiz JSON girişi

    -- Returns NULL.
    SELECT GET_JSON_OBJECT('','$.array[1][1]');
    
    -- Returns NULL.
    SELECT GET_JSON_OBJECT('"array":["aaaa",1111],"bbbb":["cccc",3333]','$.array[1][1]');

    Kaçış karakteri olarak işaretlenmiş JSON dizeleri

    SET odps.sql.udf.getjsonobj.new=true;
    
    --Returns "1".
    SELECT GET_JSON_OBJECT('{"a":"\\"1\\"","b":"2"}', '$.a'); 
    
    --Returns '1'.
    SELECT GET_JSON_OBJECT('{"a":"\'1\'","b":"2"}', '$.a');

    Emoji desteği

    -- Returns the emoji symbol.
    SELECT GET_JSON_OBJECT('{"a":"<Emoji symbol>"}', '$.a');
    Not: DataWorks emoji karakterlerinin doğrudan girilmesini desteklemez. Emoji karakterlerine karşılık gelen kodlanmış dizeleri MaxCompute'e yazmak için Data Integration gibi bir araç kullanabilirsiniz. Ardından bunları işlemek için GET_JSON_OBJECT işlevini kullanabilirsiniz.

INITCAP

  • Sözdizimi

    string initcap(<str>)
  • Açıklama

    str değerini başlık durumuna dönüştürür; kelimeler boşluklarla ayrılır, her kelimenin ilk harfi büyük, geri kalanı küçük harf olur.

  • Parametreler

    str: Gereklidir. STRING türüdür. Giriş dizesi.

  • Dönüş değeri

    Her kelimenin ilk harfi büyük, geri kalanı küçük harf olan bir dize döndürür.

  • Örnek

    -- Returns Odps Sql.
    SELECT initcap("oDps sql");

INSTR

  • Sözdizimi

    bigint instr(string <str1>, string <str2>[, bigint <start_position>[, bigint <nth_appearance>]])
  • Açıklama

    str1 dizesinde str2 alt dizesinin konumunu bulur.

  • Parametreler

    • str1: Gereklidir. STRING türüdür. Aranacak hedef dizedir. Giriş BIGINT, DOUBLE, DECIMAL veya DATETIME ise örtük olarak STRING'e dönüştürülür. Diğer türler hata döndürür.

    • str2: Gereklidir. STRING türüdür. Eşleştirilecek alt dizedir. Giriş BIGINT, DOUBLE, DECIMAL veya DATETIME ise örtük olarak STRING'e dönüştürülür. Diğer türler hata döndürür.

    • start_position: İsteğe bağlıdır. BIGINT türünde bir değerdir. Diğer veri türleri için hata döndürülür. Bu parametre, aramanın başlayacağı str1 içindeki karakter konumunu belirtir. Varsayılan başlangıç konumu ilk karakterdir, yani 1. konumdur. start_position negatif bir değerse arama dizenin sonundan geriye doğru sayılarak başlar; burada son karakter -1 konumundadır, sondan ikinci karakter -2 konumundadır ve bu şekilde devam eder.

    • nth_appearance: İsteğe bağlıdır. 0'dan büyük olması gereken BIGINT türünde bir değerdir. Bu parametre, str1 içindeki str2 eşleşmesinin nth_appearance kez gerçekleştiği konumu belirtir. nth_appearance başka bir veri türündeyse veya 0'a eşit ya da 0'dan küçükse hata döndürülür.

  • Dönüş değeri

    BIGINT türünde bir değer döndürür. Dönüş değeri şu kuralları izler:

    • str1 str2 içermiyorsa 0 döndürülür.

    • str2 boşsa her zaman başarıyla eşleşir. Örnek: select instr('abc',''); 1 döndürür.

    • str1, str2, start_position veya nth_appearance NULL ise NULL döndürülür.

  • Örnekler

    • Örnek 1: Tech on the net dizesinde e karakterinin konumunu bulun. Örnek ifade:

      -- Returns 2.
      select instr('Tech on the net', 'e');
    • Örnek 2: Tech on the net dizesinde on alt dizesinin konumunu bulun. Örnek ifade:

      -- Returns 6.
      select instr('Tech on the net', 'on');
    • Örnek 3: Tech on the net dizesinde üçüncü karakterden başlayarak e karakterinin ikinci oluşumunun konumunu bulun. Örnek ifade:

      -- Returns 14.
      select instr('Tech on the net', 'e', 3, 2);
    • Örnek 4: Giriş parametrelerinden biri NULL'dur. Örnek ifade:

      -- Returns NULL.
      select instr('Tech on the net', null);

IS_ENCODING

  • Sözdizimi

    boolean is_encoding(string <str>, string <from_encoding>, string <to_encoding>)
  • Açıklama

    Giriş dizesi str değerinin from_encoding karakter kümesinden to_encoding karakter kümesine dönüştürülebilip dönüştürülemeyeceğini belirler. Ayrıca bozuk metni algılamak için de kullanılır; genellikle from_encoding UTF-8 ve to_encoding GBK olarak ayarlanır.

  • Parametreler

    • str: Gereklidir. STRING türüdür. Boş dizeler herhangi bir karakter kümesi için geçerli kabul edilir.

    • from_encoding, to_encoding: Gereklidir. STRING türüdür. Kaynak ve hedef karakter kümeleri.

  • Dönüş değeri

    BOOLEAN türünde bir değer döndürür. Dönüş değeri şu kuralları izler:

    • str başarıyla dönüştürülürse True, aksi takdirde False döndürülür.

    • str, from_encoding veya to_encoding NULL ise NULL döndürülür.

JSON_TUPLE

  • Sözdizimi

    string json_tuple(string <json>, string <key1>, string <key2>,...)
  • Açıklama

    Girdi olarak verilen anahtar kümesine (key1,key2,...) dayanarak standart bir JSON dizesinden dizeler çıkarır.

  • Parametreler

    • json: gereklidir. STRING türünde bir değerdir. Bu parametre, standart bir JSON dizesini belirtir.

    • key: gereklidir. STRING türünde bir değerdir. Bu parametre, JSON dizesindeki bir JSON nesnesinin path (yol) değerini tanımlar. Değer dolar işareti ($) ile başlayamaz. Aynı anda birden çok anahtar girebilirsiniz. MaxCompute, JSON nesnelerini . veya [''] kullanarak ayrıştırır. Bir JSON nesnesindeki bir anahtar nokta (.) içeriyorsa [''] kullanabilirsiniz.

  • Dönüş değeri

    STRING türünde bir değer döndürür.

    Not
    • json boşsa veya geçersizse null döndürülür.

    • key boşsa, geçersizse veya JSON dizesinde mevcut değilse null döndürülür.

    • json geçerliyse ve key mevcutsa ilgili dize döndürülür.

    • Bu işlev, Çince karakterler içeren JSON verilerini ayrıştırabilir.

    • Bu işlev, iç içe geçmiş JSON verilerini ayrıştırabilir.

    • Bu işlev, iç içe geçmiş diziler içeren JSON verilerini ayrıştırabilir.

    • Ayrıştırma eylemi, set odps.sql.udf.getjsonobj.new=true; ayarıyla birlikte GET_JSON_OBJECT çalıştırılmasına eşdeğerdir. Bir JSON dizesinden birden çok nesne almak için GET_JSON_OBJECT işlevini birden çok kez çağırmanız gerekir. Sonuç olarak, JSON dizesi birden çok kez ayrıştırılır. JSON_TUPLE işlevi aynı anda birden çok anahtar girmenize olanak tanır ve JSON dizesi yalnızca bir kez ayrıştırılır. JSON_TUPLE, GET_JSON_OBJECT'ten daha verimlidir.

    • JSON_TUPLE, kullanıcı tanımlı tablo değerli bir işlevdir (UDTF). Bir tablodan bazı sütunları seçmek istiyorsanız JSON_TUPLE'ü LATERAL VIEW yan tümcesiyle birlikte kullanın.

KEYVALUE

  • Sözdizimi

    keyvalue(string <str>,[string <split1>,string <split2>,] string <key>)
    keyvalue(string <str>,string <key>) 
  • Açıklama

    str dizesini split1 kullanarak anahtar-değer çiftlerine böler, çiftleri split2 kullanarak ayırır ve key ile eşleşen değeri döndürür.

  • Parametreler

    • str: gereklidir. STRING türündedir. Bölünecek dizedir.

    • split1, split2: isteğe bağlıdır. STRING türündedir. Bölme işlemi için sınırlayıcı dizelerdir. Belirtilmezse varsayılan split1 değeri ";" ve split2 değeri ":" olur. split1 tarafından bölünen bir alt dize birden fazla split2 içeriyorsa sonuç tanımsızdır.

    • key: gereklidir. STRING türündedir. split1 ve split2 ile bölme işleminden sonra key için değeri döndürür.

  • Dönüş değeri

    STRING türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:

    • split1 veya split2 NULL ise NULL döndürülür.

    • str veya key NULL ise veya eşleşen bir key yoksa NULL döndürülür.

    • Birden çok anahtar-değer çifti eşleşirse ilk eşleşen key için değer döndürülür.

  • Örnekler

    • Örnek 1: 0:1/;1:2 dizesini anahtar-değer çiftlerine bölün ve 1 anahtarı için değeri döndürün. Örnek ifade:

      -- Returns 2.
      select keyvalue('0:1/;1:2', 1);

      split1 ve split2 parametreleri belirtilmemiştir. split1 varsayılan değeri noktalı virgül (";") ve split2 varsayılan değeri iki nokta üst üstedir (":").

      split1 ile bölündükten sonra anahtar-değer çiftleri 0:1/,1:2 şeklindedir. split2 ile bölündükten sonra:

      0 1/  
      1 2

      1 anahtarı için 2 değerini döndürür.

    • Örnek 2: “\;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\;” dizesini “\;” split1 ve ":" split2 olarak kullanarak bölün, ardından tf anahtarı için değeri döndürün. Örnek ifade:

      -- Returns 21910.
      select keyvalue("\;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\;","\;",":","tf");

      "\;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\;" dizesini "\;" sınırlayıcısı kullanarak bölmek aşağıdaki anahtar-değer çiftlerini oluşturur.

      decreaseStore:1,xcard:1,isB2C:1,tf:21910,cart:1,shipping:2,pf:0,market:shoes,instPayAmount:0 

      ":" ile bölme sonucu aşağıdaki gibidir.

      decreaseStore 1  
      xcard 1  
      isB2C 1  
      tf 21910  
      cart 1  
      shipping 2  
      pf 0  
      market shoes  
      instPayAmount 0

      tf anahtarı için 21910 değerini döndürür.

KEYVALUE_TUPLE

  • Sözdizimi

    KEYVALUE_TUPLE(str, split1, split2, key1, key2, ..., keyN)
  • Açıklama

    str dizesini split1 kullanarak anahtar-değer çiftlerine böler, çiftleri split2 kullanarak ayırır ve birden çok key için değerleri döndürür.

  • Parametreler

    • str: gereklidir. STRING türündedir. Bölünecek dizedir.

    • split1, split2: gereklidir. STRING türündedir. Bölme işlemi için sınırlayıcı dizelerdir. split1 tarafından bölünen bir alt dize birden fazla split2 içeriyorsa sonuç tanımsızdır.

    • key: gereklidir. STRING türündedir. split1 ve split2 ile bölme işleminden sonra key için değeri döndürür.

  • Dönüş değeri

    STRING türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:

    • split1 veya split2 NULL ise NULL döndürülür.

    • str veya key NULL ise veya eşleşen bir key yoksa NULL döndürülür.

  • Örnek

    -- Create table
    create table mf_user (
    user_id string,
    user_info string
    );
    -- Insert data
    insert into mf_user values('1','age:18;genda:f;address:abc'),('2','age:20;genda:m;address:bcd');
    -- Query
    SELECT user_id,
    KEYVALUE(user_info,';',':','age') as age,
    KEYVALUE(user_info,';',':','genda') as genda,
    KEYVALUE(user_info,';',':','address') as address
    FROM mf_user;
    -- Equivalent to KEYVALUE query
    SELECT user_id,
    age,
    genda,
    address
    FROM mf_user LATERAL VIEW KEYVALUE_TUPLE(user_info,';', ':','age','genda','address') ui AS age,genda,address;

    Sonuç aşağıdaki gibidir.

    +------------+------------+------------+------------+
    | user_id    | age        | genda      | address    |
    +------------+------------+------------+------------+
    | 1          | 18         | f          | abc        |
    | 2          | 20         | m          | bcd        |
    +------------+------------+------------+------------+

LENGTH

  • Sözdizimi

    bigint length(string <str>)
  • Açıklama

    str dizesinin uzunluğunu hesaplar.

  • Parametreler

    str: gereklidir. STRING türündedir. Girdi BIGINT, DOUBLE, DECIMAL veya DATETIME ise örtük olarak STRING'e dönüştürülür.

  • Dönüş değeri

    BIGINT türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:

    • str STRING, BIGINT, DOUBLE, DECIMAL veya DATETIME değilse hata döndürülür.

    • str NULL ise NULL döndürülür.

    • str UTF-8 kodlamalı değilse -1 döndürülür.

  • Örnekler

    • Örnek 1: Tech on the net dizesinin uzunluğunu hesaplayın. Örnek ifade:

      -- Returns 15.
      select length('Tech on the net');
    • Örnek 2: Giriş parametresi NULL'dur. Örnek ifade:

      -- Returns NULL.
      select length(null);

LENGTHB

  • Sözdizimi

    bigint lengthb(string <str>)
  • Açıklama

    str dizesinin bayt uzunluğunu hesaplar.

  • Parametreler

    str: gereklidir. STRING türündedir. Girdi BIGINT, DOUBLE, DECIMAL veya DATETIME ise örtük olarak STRING'e dönüştürülür.

  • Dönüş değeri

    BIGINT türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:

    • str STRING, BIGINT, DOUBLE, DECIMAL veya DATETIME değilse hata döndürülür.

    • str NULL ise NULL döndürülür.

  • Örnekler

    • Örnek 1: Tech on the net dizesinin bayt uzunluğunu hesaplayın. Örnek ifade:

      -- Returns 15.
      select lengthb('Tech on the net');
    • Örnek 2: Giriş parametresi NULL'dur. Örnek ifade:

      -- Returns NULL.
      select lengthb(null);

LOCATE

  • Sözdizimi

    bigint locate(string <substr>, string <str>[, bigint <start_pos>]) 
  • Açıklama

    str içindeki substr alt dizesinin konumunu bulur. Başlangıç konumunu (1'den başlayarak) belirtmek için start_pos kullanın.

  • Parametreler

    • substr: gereklidir. STRING türündedir. Aranacak alt dizedir.

    • str: gereklidir. STRING türündedir. Aramanın yapılacağı dizedir.

    • start_pos: isteğe bağlıdır. BIGINT türündedir. Arama için başlangıç konumudur.

  • Dönüş değeri

    BIGINT türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:

    • str substr içermiyorsa 0 döndürülür.

    • str veya substr NULL ise NULL döndürülür.

    • start_pos NULL ise 0 döndürülür.

  • Örnekler

    • Örnek 1: ab dizesinin abchelloabc dizesindeki konumunu bulun. Örnek ifade:

      -- Returns 1.
      select locate('ab', 'abchelloabc');
    • Örnek 2: hi dizesinin abchelloabc dizesindeki konumunu bulun. Örnek ifade:

      -- Returns 0.
      select locate('hi', 'abc,hello,ab,c');
    • Örnek 3: start_pos NULL'dur. Örnek ifade:

      -- Returns 0.
      select locate('ab', 'abhelloabc', null);

LPAD

  • Sözdizimi

    string lpad(string <str1>, int <length>, string <str2>)
  • Açıklama

    str1 dizesini length karakter uzunluğuna ulaşana kadar str2 dizesiyle soldan doldurur. Bu işlev, MaxCompute V2.0'daki bir uzantıdır.

  • Parametreler

    • str1: gereklidir. STRING türündedir. Soldan doldurulacak dizedir.

    • length: gereklidir. INT türündedir. Soldan doldurma için karakter sayısıdır.

    • str2: gereklidir. Doldurma dizesidir.

  • Dönüş değeri

    STRING türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:

    • length str1 uzunluğundan küçükse str1 dizesinin en soldaki length karakterini döndürür.

    • length 0 ise boş dize döndürülür.

    • Giriş parametresi yoksa veya herhangi bir giriş parametresi NULL ise NULL döndürülür.

  • Örnekler

    • Örnek 1: abcdefgh dizesini 10 karakter uzunluğuna getirmek için 12 dizesini kullanarak soldan doldurun. Örnek komut aşağıdaki gibidir.

      -- Returns 12abcdefgh.
      select lpad('abcdefgh', 10, '12');
    • Örnek 2: abcdefgh dizesini 5 karakter uzunluğuna getirmek için 12 dizesini kullanarak soldan doldurun. Aşağıda örnek bir komut verilmiştir.

      -- Returns abcde.
      select lpad('abcdefgh', 5, '12');
    • Örnek 3: length 0'dır. Örnek ifade:

      -- Returns empty string.
      select lpad('abcdefgh' ,0, '12'); 
    • Örnek 4: Bir giriş parametresi NULL'dur. Örnek ifade:

      -- Returns NULL.
      select lpad(null ,0, '12');

LTRIM

  • Sözdizimi

    string ltrim(string <str>[, <trimChars>])
    string trim(leading [<trimChars>] from <str>)
  • Açıklama

    str dizesinin sol ucundaki karakterleri kaldırır:

    • trimChars belirtilmezse varsayılan olarak baştaki boşlukları kaldırır.

    • trimChars belirtirseniz işlev, trimChars içindeki karakterleri bir küme olarak kabul eder ve str dizesinin sol ucundan yalnızca trimChars kümesindeki karakterlerden oluşan mümkün olan en uzun alt dizeyi kaldırır.

  • Parametreler

    • str: gereklidir. STRING türündedir. Kırpılacak dizedir. Girdi BIGINT, DECIMAL, DOUBLE veya DATETIME ise örtük olarak STRING'e dönüştürülür.

    • trimChars: isteğe bağlıdır. STRING türündedir. Kaldırılacak karakterlerdir.

  • Dönüş değeri

    STRING türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:

    • str STRING, BIGINT, DOUBLE, DECIMAL veya DATETIME değilse hata döndürülür.

    • str veya trimChars NULL ise NULL döndürülür.

  • Örnekler

    • Örnek 1: yxTxyomxx dizesinden baştaki boşlukları kaldırın. Örnek ifadeler:

      -- Returns yxTxyomxx.
      select ltrim(' yxTxyomxx ');
      -- Equivalent to:
      select trim(leading from ' yxTxyomxx ');
    • Örnek 2: yxTxyomxx dizesinden xy kümesinde bulunan tüm baştaki karakterleri kaldırın.

      -- Returns Txyomxx. Any leading x or y is removed.
      select ltrim('yxTxyomxx', 'xy');
      -- Equivalent to:
      select trim(leading 'xy' from 'yxTxyomxx');
    • Örnek 3: Giriş parametresi NULL'dur. Örnek ifadeler:

      -- Returns NULL.
      select ltrim(null);
      select ltrim('yxTxyomxx', null);

MASK_HASH

  • Sözdizimi

    mask_hash(<expr>)
  • Açıklama

    Dize ifadesi expr'den hesaplanan bir karma değer döndürür. Aynı karma değerleri, aynı ifade değerlerini gösterir.

  • Parametreler

    expr: gereklidir. Karma hesaplama için kullanılan dize ifadesidir. STRING, CHAR, VARCHAR, BINARY türlerini destekler.

  • Dönüş değeri

    64 baytlık bir karma değeri döndürür. Dize olmayan ifadeler için null döndürülür (Hive uyumlu).

  • Örnek

    -- Returns hash for abc
    select mask_hash("abc");
    -- Returns
    +------------+
    | _c0        |
    +------------+
    | ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad |
    +------------+
    
    -- Returns NULL for non-string input
    select mask_hash(100);
    -- Returns
    +------------+
    | _c0        |
    +------------+
    | NULL       |
    +------------+

MD5

  • Sözdizimi

    string md5(string <str>)
  • Açıklama

    str dizesinin MD5 karmasını hesaplar.

  • Parametreler

    str: gereklidir. STRING türündedir. Girdi BIGINT, DOUBLE, DECIMAL veya DATETIME ise örtük olarak STRING'e dönüştürülür.

  • Dönüş değeri

    STRING türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:

    • str STRING, BIGINT, DOUBLE, DECIMAL veya DATETIME değilse hata döndürülür.

    • str NULL ise NULL döndürülür.

  • Örnekler

    • Örnek 1: Tech on the net dizesinin MD5 karmasını hesaplayın. Örnek ifade:

      -- Returns ddc4c4796880633333d77a60fcda9af6.
      select md5('Tech on the net');
    • Örnek 2: Giriş parametresi NULL'dur. Örnek ifade:

      -- Returns NULL.
      select md5(null);

PARSE_URL

  • Sözdizimi

    string parse_url(string <url>, string <part>[, string <key>])
  • Açıklama

    url adresini ayrıştırır ve part tarafından belirtilen bilgileri ayıklar.

  • Parametreler

    • url: gereklidir. STRING türündedir. URL bağlantısıdır. Geçersiz URL'ler hata döndürür.

    • part: gereklidir. STRING türündedir. Geçerli değerler: HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO (büyük/küçük harfe duyarlı değildir).

    • key: isteğe bağlıdır. part QUERY olduğunda key için değeri döndürür.

  • Dönüş açıklaması

    STRING türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:

    • url, part veya key NULL ise NULL döndürülür.

    • part geçersizse hata döndürülür.

  • Örnek

    -- Returns example.com.
    select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'HOST');
    -- Returns /over/there/index.dtb.
    select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'PATH');
    -- Returns animal.
    select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'QUERY', 'type');
    -- Returns nose.
    select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'REF');
    -- Returns file.
    select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'PROTOCOL');
    -- Returns username:password@example.com:8042.
    select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'AUTHORITY');
    -- Returns username:password.
    select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'USERINFO');

PARSE_URL_TUPLE

  • Sözdizimi

    string parse_url_tuple(string <url>, string <key1>, string <key2>,...)
  • Açıklama

    url adresini ayrıştırır ve girdi anahtarları key1, key2 vb. tarafından belirtilen dizeleri ayıklar. PARSE_URL ile benzerdir ancak birden çok anahtarı aynı anda ayıklar ve daha iyi performans sunar.

  • Parametreler

    • url: gereklidir. STRING türündedir. URL bağlantısıdır. Geçersiz URL'ler hata döndürür.

    • key1, key2: gereklidir. STRING türündedir. Ayıklanacak anahtarlardır. Geçerli değerler:

      • HOST: Ana bilgisayar adresi (alan adı veya IP).

      • PATH: Sunucudaki ağ kaynağının yolu.

      • QUERY: Sorgu dizesi (sorgulanacak içerik).

      • REF: URL'nin parça tanımlayıcısını, yani # sembolünden sonraki içeriği belirtir.

      • PROTOCOL: Protokol türü.

      • AUTHORITY: Sunucu alan adı/IP'si, bağlantı noktası ve kullanıcı kimlik doğrulama bilgileri (kullanıcı adı, parola).

      • FILE: Yol ve sorgu içeriği (PATH + QUERY).

      • USERINFO: Kullanıcı kimlik doğrulama bilgileri.

      • QUERY:<KEY>: Sorgu dizesindeki belirtilen anahtarın değeri.

      Büyük/küçük harfe duyarlı değildir. Geçersiz değerler hata döndürür.

  • Dönüş Açıklaması

    STRING türünde bir değer döndürür. url veya key NULL ise hata döndürülür.

  • Örnek

    file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose adresinden her anahtar için dizeleri ayıklayın. Örnek ifade:

    select parse_url_tuple('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'HOST', 'PATH', 'QUERY', 'REF', 'PROTOCOL', 'AUTHORITY', 'FILE', 'USERINFO', 'QUERY:type', 'QUERY:name') as (item0, item1, item2, item3, item4, item5, item6, item7, item8, item9);

    Döndürülen değerler:

    +------------+------------+------------+------------+------------+------------+------------+------------+------------+------------+
    | item0      | item1      | item2      | item3      | item4      | item5      | item6      | item7      | item8      | item9      |
    +------------+------------+------------+------------+------------+------------+------------+------------+------------+------------+
    | example.com | /over/there/index.dtb | type=animal&name=narwhal | nose       | file       | username:password@example.com:8042 | /over/there/index.dtb?type=animal&name=narwhal | username:password | animal     | narwhal    |
    +------------+------------+------------+------------+------------+------------+------------+------------+------------+------------+

REGEXP_COUNT

  • Sözdizimi

    bigint regexp_count(string <source>, string <pattern>[, bigint <start_position>])
  • Açıklama

    Belirtilen pattern ile eşleşen ve start_position konumundan başlayan source içindeki alt dizelerin sayısını hesaplar.

  • Parametreler

    • source: gereklidir. STRING türündedir. Aranacak dizedir. Diğer türler hata döndürür.

    • pattern: gereklidir. STRING sabiti veya düzenli ifadedir. Eşleştirilecek desendir. Daha fazla regex yönergesi için bkz. RLIKE dize eşleştirme. Boş veya geçersiz pattern hata döndürür.

    • start_position: isteğe bağlıdır. BIGINT türünde bir sabittir. Bu parametrenin değeri 0'dan büyük olmalıdır. Değer başka bir veri türündeyse veya 0'a eşit ya da 0'dan küçükse hata döndürülür. Bu parametreyi belirtmezseniz varsayılan değer 1 olur. Bu değer, aramanın source dizesinin ilk karakterinden başladığını gösterir.

  • Dönüş değeri

    BIGINT türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:

    • Eşleşme bulunamazsa 0 döndürür.

    • source, pattern veya start_position NULL ise NULL döndürür.

  • Örnekler

    • Örnek 1: Belirtilen konumdan başlayarak abababc içindeki eşleşen alt dizgeleri sayar. Örnek deyimler:

      -- Returns 1.
      select regexp_count('abababc', 'a.c');
      -- Returns 2.
      select regexp_count('abababc', '[[:alpha:]]{2}', 3);
    • Örnek 2: Bir giriş parametresi NULL'dur. Örnek deyim:

      -- Returns NULL.
      select regexp_count('abababc', null);
    • Örnek 3: JSON dizesi {"account_id":123456789,"account_name":"allen","location":"hangzhou","bill":100} içindeki : karakterlerinin sayısını hesaplar. Örnek deyim:

      -- Returns 4.
      select regexp_count('{"account_id":123456789,"account_name":"allen","location":"hangzhou","bill":100}',':');

REGEXP_EXTRACT

  • Sözdizimi

    string regexp_extract(string <source>, string <pattern>[, bigint <groupid>])
    Not

    Hive uyumlu veri türü sürümlerinde REGEXP_EXTRACT Java regex belirtimini takip eder. 1.0 ve 2.0 veri türü sürümlerinde ise MaxCompute belirtimini takip eder.

  • Açıklama

    source dizesini pattern kullanarak gruplara böler ve groupid grubundaki dizeyi döndürür.

  • Parametreler

    • source: gereklidir. STRING türündedir. Bölünecek dizedir.

    • pattern: gereklidir. STRING sabiti veya düzenli ifadedir. Eşleştirilecek desendir. Daha fazla regex yönergesi için bkz. RLIKE string matching.

    • groupid: isteğe bağlıdır. BIGINT sabitidir, ≥0 olmalıdır.

    Not

    Veriler UTF-8 formatında saklanır. Çince karakterler [\\x{4e00},\\x{9fa5}] aralığında onaltılık olarak temsil edilebilir.

  • Dönüş değeri

    STRING türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:

    • pattern boş bir dize ise veya pattern içinde hiçbir grup belirtilmemişse hata döndürülür.

    • groupid BIGINT türünde değilse veya 0'dan küçükse hata döndürülür. Bu parametreyi belirtmezseniz varsayılan değer 1 olur; bu, ilk gruptaki alt dizenin döndürüleceği anlamına gelir. groupid 0 olarak ayarlanırsa tüm pattern ile eşleşen alt dize döndürülür.

    • source, pattern veya groupid NULL ise NULL döndürür.

REGEXP_EXTRACT_ALL

  • Sözdizimi

    array<T> regexp_extract_all(string <source>, string <pattern>[,bigint <group_id>])
  • Açıklama

    Bir dize içinde düzenli ifade deseniyle eşleşen tüm alt dizgeleri bulur ve bunları bir dizi olarak döndürür.

  • Parametreler

    • source: gereklidir. STRING türündedir. Analiz edilecek dizedir.

    • pattern: gereklidir. STRING türündedir. Eşleştirilecek desendir. Bu, bir STRING sabiti veya düzenli ifade olabilir. Daha fazla regex yönergesi için bkz. RLIKE string matching.

    • group_id: isteğe bağlıdır. Bir BIGINT değeridir. Bu parametre, deseni eşleştirmek için kullanılan grubun kimliğini belirtir. Bu parametrenin değeri 0 değerine eşit veya büyük olmalıdır. Bu parametreyi belirtmezseniz deseni eşleştirmek için group_id değeri 1 olan grup kullanılır. Bu parametreyi 0 olarak ayarlarsanız pattern bir bütün olarak eşleştirilir.

  • Dönüş değeri

    Bir ARRAY değeri döndürülür. group_id belirtirseniz belirtilen group_id için tüm eşleşen sonuçları içeren bir dizi döndürülür. group_id belirtmezseniz group_id 1 için tüm eşleşen sonuçları içeren bir dizi döndürülür.

  • Örnek

    • group_id belirtmezseniz varsayılan davranış ilk group_id ile eşleşen sonuçları döndürmektir.

      SELECT regexp_extract_all('100-200, 300-400', '(\\d+)-(\\d+)');

      Döndürülen değer:

      +------------+
      | _c0        |
      +------------+
      | [100,300] |
      +------------+
    • group_id değerini 2 olarak ayarlarsanız ikinci group_id için eşleşen sonuç döndürülür.

      SELECT regexp_extract_all('100-200, 300-400', '(\\d+)-(\\d+)',2);

      Sonuç aşağıdaki gibidir.

      +------------+
      | _c0        |
      +------------+
      | [200,400] |
      +------------+

REGEXP_INSTR

  • Sözdizimi

    bigint regexp_instr(string <source>, string <pattern>[,bigint <start_position>[, bigint <occurrence>[, bigint <return_option>]]])
  • Açıklama

    source içinde pattern ile eşleşen bir alt dizenin belirtilen occurrence kez oluşumunun başlangıç veya bitiş konumunu start_position konumundan başlayarak döndürür.

  • Parametreler

    • source: Gereklidir. Kaynak dizedir. Veri türü STRING olmalıdır.

    • pattern: Gereklidir. Eşleştirilecek desendir. Değer bir STRING sabiti veya düzenli ifade olabilir. Düzenli ifadeler hakkında daha fazla bilgi için bkz. RLIKE string matching. Boş bir pattern hata döndürür.

    • start_position: İsteğe bağlıdır. Aramanın başladığı konumdur. Değer bir BIGINT sabiti olmalıdır. Varsayılan değer 1'dir.

    • occurrence: İsteğe bağlıdır. Bulunacak eşleşmenin oluşum sırasıdır. Değer bir BIGINT sabiti olmalıdır. Varsayılan değer 1'dir; bu, ilk eşleşmeyi gösterir.

    • return_option: İsteğe bağlıdır. Döndürülecek konumdur. Değer bir BIGINT sabiti olmalıdır. Geçerli değerler: 0 başlangıç konumunu, 1 bitiş konumunu belirtir. Varsayılan değer 0'dır. Geçersiz bir değer belirtirseniz hata döndürülür.

  • Dönüş değeri

    Dönüş değeri BIGINT türündedir. return_option parametresi, source içinde eşleşen alt dizenin başlangıç mı yoksa bitiş konumunun mu döndürüleceğini belirtir. Dönüş değeri aşağıdaki kurallarla belirlenir:

    • pattern boşsa hata döndürülür.

    • start_position veya occurrence değeri bir BIGINT sabiti değilse veya 0'a eşit ya da küçükse hata döndürülür.

    • source, pattern, start_position, occurrence veya return_option NULL ise NULL döndürülür.

  • Örnekler

    • Örnek 1: i love www.taobao.com dizesinde o[[:alpha:]]{1} ile eşleşen bir alt dizenin 2 nci oluşumunun başlangıç konumunu 3 konumundan başlayarak döndürür. Örnek deyim:

      -- Returns 14.
      select regexp_instr('i love www.taobao.com', 'o[[:alpha:]]{1}', 3, 2);
    • Örnek 2: i love www.taobao.com dizesinde o[[:alpha:]]{1} ile eşleşen bir alt dizenin second oluşumunun bitiş konumunu döndürür. Arama third karakterden başlar. Örnek deyim:

      -- Returns 16.
      select regexp_instr('i love www.taobao.com', 'o[[:alpha:]]{1}', 3, 2, 1);
    • Örnek 3: Bir giriş parametresi NULL'dur. Örnek deyim:

      -- Returns NULL.
      select regexp_instr('i love www.taobao.com', null, 3, 2);

REGEXP_REPLACE

  • Sözdizimi

    string regexp_replace(string <source>, string <pattern>, string <replace_string>[, bigint <occurrence>])
    Not

    Hive uyumlu veri türleri için REGEXP_REPLACE işlevi Java düzenli ifade belirtimini takip eder. 1.0 ve 2.0 veri türleri için MaxCompute belirtimini takip eder.

  • Açıklama

    source dizesinde occurrence tarafından belirtilen konumda pattern ile eşleşen alt dizeyi replace_string ile değiştirir ve sonucu döndürür.

  • Parametreler

    • source: Gereklidir. STRING türünde bir değerdir. Değiştirilecek kaynak dizedir.

    • pattern: Gereklidir. Bir STRING sabiti veya düzenli ifadedir. Eşleştirilecek desendir. Düzenli ifade kuralları hakkında daha fazla bilgi için bkz. RLIKE string matching. pattern boşsa hata döndürülür.

    • replace_string: Gereklidir. STRING türünde bir değerdir. pattern ile eşleşen alt dizenin yerine geçen dizedir.

      Not
      • replace_string boş bir dize ise işlev pattern ile eşleşen alt dizeyi siler.

      • replace_string \\n biçiminde geri başvurular içerebilir; bu, pattern içindeki n. yakalama grubuyla eşleşen alt dizeyi eklemek için kullanılır. n değeri 1 ile 9 arasında bir tamsayı olabilir. \\0, pattern ile eşleşen tüm alt dizeyi ekler. Eğik çizgileri kaçış karakteri olarak kullanmanız gerekir (örneğin \\1) veya R'(\\1)' gibi ham dize kullanabilirsiniz.

    • occurrence: İsteğe bağlıdır. BIGINT türünde bir sabittir ve 0'a eşit veya büyük olmalıdır. Bu parametrenin değeri, occurrence tarafından belirtilen n. oluşumdaki desenle eşleşen dizenin replace_string ile değiştirileceğini gösterir. Bu parametre 0 olarak ayarlanırsa belirtilen desenle eşleşen tüm alt dizgeler değiştirilir. Başka bir veri türündeyse veya 0'dan küçükse hata döndürülür. Varsayılan değer: 0.

  • Dönüş değeri

    STRING türünde bir değer döndürülür. Dönüş değeri aşağıdaki kurallarla belirlenir:

    • Var olmayan bir gruba başvuru yapılırsa sonuç tanımsızdır.

    • replace_string NULL ise ve pattern için bir eşleşme bulunursa NULL döndürülür.

    • replace_string NULL ise ve pattern eşleşmezse işlev orijinal dizeyi döndürür.

    • source, pattern veya occurrence NULL ise NULL döndürülür.

  • Örnekler

    • Örnek 1: Belirtilen kurallara göre alt dizgeleri değiştirir.

      -- Returns Abcd.
      select regexp_replace("abcd", "a", "A", 0);
      -- Returns bcd.
      select regexp_replace("abcd", "a", "", 0);
      -- Returns 19700101.
      select regexp_replace("1970-01-01", "-", "", 0);
      -- Returns abc.
      select regexp_replace("a1b2c3", "[0-9]", "", 0);
      -- Returns a1b2c.
      select regexp_replace("a1b2c3", "[0-9]", "", 3);
    • Örnek 2: 123.456.7890 dizesindeki ([[:digit:]]{3})\\.([[:digit:]]{3})\\.([[:digit:]]{4}) deseni için tüm eşleşmeleri (\\1)\\2-\\3 ile değiştirir. Örnek deyim:

      -- Returns (123)456-7890.
      select regexp_replace('123.456.7890', '([[:digit:]]{3})\\.([[:digit:]]{3})\\.([[:digit:]]{4})',
      '(\\1)\\2-\\3', 0);
    • Örnek 3: abcd dizesindeki bir desenle eşleşen alt dizgeleri belirtilen kurallara göre değiştirir. Örnek deyimler:

      -- Returns a b c d.
      select regexp_replace('abcd', '(.)', '\\1 ', 0);
      -- Returns a bcd.
      select regexp_replace('abcd', '(.)', '\\1 ', 1);
      -- Returns d.
      select regexp_replace("abcd", "(.*)(.)$", "\\2", 0);
    • Örnek 4: url_set tablosunda değerleri www.simple@xxx.com formatında olan bir URL sütunu vardır. xxx kısmı her satır için benzersizdir. Bu örnek www sonrasındaki tüm karakterleri değiştirir. Örnek deyim:

      -- Returns wwwtest.
      select regexp_replace(url,'(www)(.*)','wwwtest',0) from url_set;
    • Örnek 5: Bir giriş parametresi NULL'dur. Örnek deyim:

      -- Returns NULL.
      select regexp_replace('abcd', '(.)', null, 0);
    • Örnek 6: Var olmayan bir gruba başvuru yapar. Örnek deyimler:

      -- Pattern defines only one group; second group reference doesn't exist.
      -- Avoid this usage; result is undefined.
      regexp_replace("abcd", "(.)", "\\2", 0) = "" or "abcd"
      -- Pattern has no groups; \1 references non-existent group.
      -- Avoid this usage; result is undefined.
      regexp_replace("abcd", "a", "\\1", 0) = "bcd" or "abcd"

REGEXP_SUBSTR

  • Sözdizimi

    string regexp_substr(string <source>, string <pattern>[, bigint <start_position>[, bigint <occurrence>]])
  • Açıklama

    source dizesinde start_position konumundan başlayarak pattern ile occurrence kez eşleşen alt dizeyi döndürür.

  • Parametreler

    • source: Gereklidir. STRING türündedir. Aranacak dizedir.

    • pattern: Gereklidir. STRING sabiti veya düzenli ifadedir. Eşleştirilecek desendir. Düzenli ifade sözdizimi RLIKE string matching içinde açıklanmıştır.

    • start_position: İsteğe bağlıdır. BIGINT sabitidir. Değer 0'dan büyük olmalıdır. Bu parametreyi belirtmezseniz varsayılan değer 1 olur; bu, aramanın source dizesinin ilk karakterinden başladığını gösterir.

    • occurrence: İsteğe bağlıdır. BIGINT sabitidir. Değer 0'dan büyük olmalıdır. Varsayılan değer 1'dir; bu, ilk eşleşmeyi gösterir.

  • Dönüş değeri

    Bir STRING döndürür. Dönüş değeri aşağıdaki kurallara uyar:

    • pattern boşsa hata oluşur.

    • Eşleşme bulunamazsa NULL döndürür.

    • start_position veya occurrence BIGINT değilse veya 0'a eşit ya da küçükse hata oluşur.

    • source, pattern, start_position veya occurrence NULL ise NULL döndürür.

  • Örnekler

    • Örnek 1: I love aliyun very much içinde belirtilen desenle eşleşen alt dizeyi döndürür. Örnek deyim:

      -- Returns aliyun.
      select regexp_substr('I love aliyun very much', 'a[[:alpha:]]{5}');
      -- Returns have.
      select regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 1);
      -- Returns 2.
      select regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 2);
    • Örnek 2: Bir giriş parametresi NULL'dur. Örnek deyim:

      -- Returns NULL.
      select regexp_substr('I love aliyun very much', null);

REPEAT

  • Sözdizimi

    string repeat(string <str>, bigint <n>)
  • Açıklama

    str dizesini n kez tekrarlayarak döndürür.

  • Parametreler

    • str: gereklidir. STRING türündedir. Giriş BIGINT, DOUBLE, DECIMAL veya DATETIME ise örtülü olarak STRING'e dönüştürülür.

    • n: gereklidir. BIGINT türündedir. Değer boyutu 2 MB'ı aşmamalıdır.

  • Dönüş değeri

    STRING türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:

    • str STRING, BIGINT, DOUBLE, DECIMAL veya DATETIME türünde değilse hata döndürülür.

    • n boşsa hata döndürülür.

    • str veya n NULL ise NULL döndürülür.

  • Örnekler

    • Örnek 1: abc dizesini 5 kez tekrarlar. Örnek deyim:

      -- Returns abcabcabcabcabc.
      select repeat('abc', 5); 
    • Örnek 2: Bir giriş parametresi NULL'dur. Örnek deyim:

      -- Returns NULL.
      select repeat('abc', null);

REPLACE

  • Sözdizimi

    string replace(string <str>, string <old>, string <new>)
  • Açıklama

    str içindeki old öğelerinin tüm oluşumlarını new ile değiştirir ve değiştirilmiş str değerini döndürür. Eşleşme bulunamazsa orijinal str döndürülür. Bu işlev MaxCompute V2.0 genişletme işlevidir.

  • Parametreler

    • str: gereklidir. STRING türündedir. Kaynak dizedir.

    • old: Gereklidir. Karşılaştırılacak dizedir.

    • new: gereklidir. STRING türündedir. Yerine geçecek dizedir.

  • Dönüş değeri

    STRING türünde bir değer döndürür. Herhangi bir giriş parametresi NULL ise NULL döndürülür.

  • Örnekler

    • Örnek 1: ababab dizesindeki abab alt dizesinin tüm oluşumlarını 12 ile değiştirir. Örnek deyim:

      -- Returns 12ab.
      select replace('ababab','abab','12');
    • Örnek 2: Giriş parametrelerinden biri NULL'dur. Örnek deyim:

      -- Returns NULL.
      select replace('123abab456ab',null,'abab');

REVERSE

  • Sözdizimi

    string reverse(string <str>)
  • Açıklama

    str dizesinin tersini döndürür.

  • Parametreler

    str: Gereklidir. STRING türünde bir parametredir. Giriş bir BIGINT, DOUBLE, DECIMAL veya DATETIME değeri ise örtülü olarak STRING türüne dönüştürülür.

  • Dönüş değeri

    STRING türünde bir değer döndürür. Aşağıdaki kurallar geçerlidir:

    • str veri türü STRING, BIGINT, DOUBLE, DECIMAL veya DATETIME değilse hata döndürülür.

    • str NULL ise NULL döndürülür.

  • Örnekler

    • Örnek 1: I love aliyun very much dizesini ters çevirir. Örnek deyim:

      -- Returns hcum yrev nuyila evol I.
      select reverse('I love aliyun very much');
    • Örnek 2: Giriş parametresi NULL'dur. Örnek deyim:

      -- Returns NULL.
      select reverse(null);

RPAD

  • Sözdizimi

    string rpad(string <str1>, int <length>, string <str2>)
  • Açıklama

    str1 dizesini doldurma dizesi str2 kullanarak length karakter uzunluğuna kadar sağdan doldurur. Bu işlev MaxCompute V2.0'da bir uzantıdır.

  • Parametreler

    • str1: gereklidir. STRING türündedir. Sağdan doldurulacak dizedir.

    • length: gereklidir. INT türündedir. 0'a eşit veya büyük olmalıdır. Doldurulmuş sonucun karakter sayısını belirtir.

    • str2 (gereklidir): Doldurma için kullanılan dizedir.

  • Dönüş değeri

    STRING türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:

    • length str1 uzunluğundan küçükse str1 öğesinin en soldaki length karakterini döndürür.

    • length 0 ise boş dize döndürür.

    • Giriş parametresi yoksa veya herhangi bir giriş parametresi NULL ise NULL döndürür.

  • Örnekler

    • Örnek 1: abcdefgh dizesini doldurma dizesi 12 kullanarak 10 karaktere kadar sağdan doldurur. Örnek deyim:

      -- Returns abcdefgh12.
      select rpad('abcdefgh', 10, '12');
    • Örnek 2: abcdefgh dizesini doldurma dizesi 12 kullanarak 5 karaktere kadar sağdan doldurur. Örnek deyim:

      -- Returns abcde.
      select rpad('abcdefgh', 5, '12');
    • Örnek 3: length 0'dır. Örnek deyim:

      -- Returns empty string.
      select rpad('abcdefgh' ,0, '12'); 
    • Örnek 4: Bir giriş parametresi NULL'dur. Örnek deyim:

      -- Returns NULL.
      select rpad(null ,0, '12');

RTRIM

  • Sözdizimi

    string rtrim(string <str>[, <trimChars>])
    string trim(trailing [<trimChars>] from <str>)
  • Açıklama

    str öğesinin sağ ucundan karakterleri kaldırır:

    • trimChars belirtilmezse varsayılan olarak boşluklar kırpılır.

    • trimChars belirtilirse trimChars içindeki karakterler bir küme olarak değerlendirilir. str öğesinin sağ ucundan tamamen trimChars kümesindeki karakterlerden oluşan en uzun alt dize kaldırılır.

  • Parametreler

    • str: gereklidir. STRING türündedir. Kırpılacak dizedir. Giriş BIGINT, DECIMAL, DOUBLE veya DATETIME ise örtülü olarak STRING'e dönüştürülür.

    • trimChars: isteğe bağlıdır. STRING türündedir. Kaldırılacak karakterlerdir.

  • Dönüş değeri

    STRING türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:

    • str STRING, BIGINT, DOUBLE, DECIMAL veya DATETIME değilse hata döndürülür.

    • str veya trimChars NULL ise NULL döndürülür.

  • Örnekler

    • Örnek 1: yxTxyomxx dizesinden sondaki boşlukları kaldırır. Örnek deyimler:

      -- Returns  yxTxyomxx.
      select rtrim(' yxTxyomxx ');
      -- Equivalent to:
      select trim(trailing from ' yxTxyomxx ');
    • Örnek 2: yxTxyomxx dizesinden xy kümesine ait olan tüm sondaki karakterleri kaldırır.

      -- Returns yxTxyom. Any trailing x or y is removed.
      select rtrim('yxTxyomxx', 'xy');
      -- Equivalent to:
      select trim(trailing 'xy' from 'yxTxyomxx');
    • Örnek 3: Giriş parametresi NULL'dur. Örnek deyimler:

      -- Returns NULL.
      select rtrim(null);
      select rtrim('yxTxyomxx', null);

SOUNDEX

  • Sözdizimi

    string soundex(string <str>)
  • Açıklama

    Standart bir dizeyi SOUNDEX dizesine dönüştürür.

  • Parametreler

    str: Gereklidir. Dönüştürülecek dizedir. Bu parametre STRING türündedir. Bu işlev, MaxCompute V2.0 sürümünde bir uzantıdır.

  • Dönüş değeri

    Dönüş değeri STRING türündedir. str NULL ise işlev NULL döndürür.

  • Örnekler

    • Örnek 1: hello dizesini SOUNDEX dizesine dönüştürür. Örnek ifade:

      -- Returns H400.
      select soundex('hello');
    • Örnek 2: Giriş parametresi NULL'dur. Örnek ifade:

      -- Returns NULL.
      select soundex(null);

SPACE

  • Sözdizimi

    string space(bigint <n>)
  • Açıklama

    n adet boşluk içeren bir dize oluşturur.

  • Parametreler

    n: gereklidir. BIGINT türündedir. Değer boyutu 2 MB'yi aşmamalıdır.

  • Dönüş değeri

    STRING döndürür. Dönüş değeri aşağıdaki kurallara uyar:

    • n boşsa hata döndürülür.

    • n NULL ise NULL döndürülür.

  • Örnek

    -- Returns 10.
    select length(space(10));

SPLIT

  • Sözdizimi

    ARRAY<STRING> SPLIT(STRING <source>, STRING <delimiter>[, BOOLEAN <trimTailEmpty>])
    
    -- Standard example.
    -- Returns ["a","b","c"].
    SELECT SPLIT('a,b,c', ',');
  • Parametreler

    • source: Gereklidir. Bölünecek dizedir. Veri türü STRING'dir.

    • delimiter: Gereklidir. Dizeyi bölmek için kullanılan ayırıcıdır. Bu parametre düzenli ifadeleri destekler. Veri türü STRING'dir.

    • trimTailEmpty: İsteğe bağlıdır. Sondaki boş dizelerin tutulup tutulmayacağını belirtir. Varsayılan değer true'dur. Bu parametreyi false olarak ayarlarsanız sondaki boş dizeler korunur. Veri türü BOOLEAN'dır.

  • Dönüş değeri

    ARRAY<STRING> türünde bir değer döndürür.

  • Örnek

    • Örnek 1: Bir dizeyi virgül kullanarak bölün.

      -- Returns ["a","b","c"].
      SELECT SPLIT('a,b,c', ',');
    • Örnek 2: Ayırıcının bulunmadığı durumları işleyin.

      -- Returns ["a,b,c"].
      SELECT SPLIT('a,b,c', ':');
    • Örnek 3: Ardışık ayırıcıları işleyin. Bu işlem boş bir dize öğesi oluşturur.

      -- Returns ["a","","b"].
      SELECT SPLIT('a,,b', ',');
    • Örnek 4: Çok karakterli bir ayırıcı kullanın.

      -- Returns ["a","b","c"].
      SELECT SPLIT('a::b::c', '::');
    • Örnek 5: Sondaki boş dizeleri koruyun.

      -- By default, trailing empty strings are not returned.
      -- Returns ["a","b","c"].
      SELECT SPLIT('a,b,c,,', ',');
      
      -- Return trailing empty strings.
      -- Returns ["a","b","c","",""].
      SELECT SPLIT('a,b,c,,', ',', false);
    • Örnek 6: Ayırıcı olarak bir kaçış karakteri veya özel karakter kullanın.

      -- Split by a line feed.
      -- Returns ["hello","world"].
      SELECT SPLIT('hello\nworld', '\n');  
      
      -- Split by a tab character.
      -- Returns ["a","b","c"].
      SELECT SPLIT('a\tb\tc', '\t');  
      
      -- Split by a carriage return.
      -- Returns ["line1","line2"].
      SELECT SPLIT('line1\rline2', '\r');  
      
      -- Escape a backslash.
      -- Returns ["a","b","c"].
      SELECT SPLIT('a\\b\\c', '\\\\');  
    • Örnek 7: NULL girişleri işleyin.

      -- If any parameter is NULL, the function returns NULL.
      -- Returns NULL.
      SELECT SPLIT(NULL, ',');
      
      -- Returns NULL.
      SELECT SPLIT('a,b,c', NULL);
      
      -- Returns NULL.
      SELECT SPLIT('a,b,c', ',', NULL);

SPLIT_PART

  • Sözdizimi

    string split_part(string <str>, string <separator>, bigint <start>[, bigint <end>])
  • Açıklama

    str dizesini separator ayırıcısını kullanarak böler ve start ile end (kapalı aralık) arasındaki alt dizeyi döndürür.

  • Parametreler

    • str: gereklidir. STRING türündedir. Bölünecek dizedir. Giriş BIGINT, DOUBLE, DECIMAL veya DATETIME ise örtük olarak STRING'e dönüştürülür.

    • separator: gereklidir. STRING sabiti. Ayırıcı (tek karakter veya dize).

    • start: gereklidir. BIGINT sabiti, 0'dan büyük olmalıdır. Başlangıç bölüm numarası (1'den başlayarak sayılır).

    • end: start değerinden büyük veya ona eşit bir BIGINT sabiti. Bu parametre, döndürülecek bitiş segment numarasını belirtir. Bu parametre belirtilmezse değeri varsayılan olarak start değerini alır ve yalnızca start tarafından belirtilen segment döndürülür.

  • Dönüş Değeri Açıklaması

    STRING döndürür. Dönüş değeri aşağıdaki kurallara uyar:

    • start gerçek bölüm sayısını aşarsa (örneğin, 6 bölüm var ancak start > 6) boş dize döndürülür.

    • separator str içinde bulunamazsa ve start = 1 ise tüm str döndürülür. str boşsa boş dize döndürülür.

    • separator boşsa orijinal str döndürülür.

    • end bölüm sayısını aşarsa start ile son bölüm arasındaki alt dize döndürülür.

    • str STRING, BIGINT, DOUBLE, DECIMAL veya DATETIME türünde değilse hata döndürülür.

    • separator bir STRING sabiti değilse hata döndürülür.

    • start veya end bir BIGINT sabiti değilse hata döndürülür.

    • separator dışındaki herhangi bir parametre NULL ise NULL döndürülür.

  • Örnekler

    • Örnek 1: a,b,c,d dizesini , ayırıcısını kullanarak bölün ve belirtilen bölümleri döndürün. Örnek ifadeler:

      -- Returns a.
      select split_part('a,b,c,d', ',', 1);
      -- Returns a,b.
      select split_part('a,b,c,d', ',', 1, 2);
    • Örnek 2: start gerçek bölüm sayısını aşıyor. Örnek ifade:

      -- Returns empty string.
      select split_part('a,b,c,d', ',', 10);
    • Örnek 3: separator str içinde bulunamadı. Örnek ifadeler:

      -- Returns a,b,c,d.
      select split_part('a,b,c,d', ':', 1);
      -- Returns empty string.
      select split_part('a,b,c,d', ':', 2);
    • Örnek 4: separator boş. Örnek ifade:

      -- Returns a,b,c,d.
      select split_part('a,b,c,d', '', 1);
    • Örnek 5: end gerçek bölüm sayısını aşıyor. Örnek ifade:

      -- Returns b,c,d.
      select split_part('a,b,c,d', ',', 2, 6);
    • Örnek 6: separator dışındaki herhangi bir giriş parametresi NULL. Örnek ifade:

      -- Returns NULL.
      select split_part('a,b,c,d', ',', null);

SUBSTR

  • Sözdizimi

    string substr(string <str>, bigint <start_position>[, bigint <length>])
  • Açıklama

    str dizesinin start_position konumundan başlayan ve uzunluğu length olan bir alt dizesini döndürür.

  • Parametreler

    • str: gereklidir. STRING türündedir. Giriş BIGINT, DECIMAL, DOUBLE veya DATETIME ise örtük olarak STRING'e dönüştürülür.

    • start_position: gereklidir. BIGINT türündedir. Varsayılan başlangıç konumu 1'dir.

      • Hive uyumlu veri türü sürümü: start_position=0 ise 1. konumla aynı davranır.

      • 1.0 ve 2.0 veri türü sürümleri: start_position=0 ise NULL döndürür.

    • length: isteğe bağlı. BIGINT türündedir. Alt dize uzunluğu >0 olmalıdır.

      Önemli
      • setproject odps.function.strictmode=false ise: length<0 durumu boşluk döndürür.

      • setproject odps.function.strictmode=true ise: length<0 durumu hata döndürür.

  • Dönüş değeri

    STRING türü döndürür. Dönüş değeri aşağıdaki kurallara uyar:

    • str STRING, BIGINT, DECIMAL, DOUBLE veya DATETIME değilse hata döndürür.

    • length BIGINT değilse veya ≤0 ise hata döndürür.

    • length parametresini atlarsanız alt dize str sonuna kadar uzatılır.

    • str, start_position veya length NULL ise NULL döndürür.

  • Örnekler

    • Örnek 1: Belirtilen konumdan ve belirtilen uzunlukta abc dizesinin bir alt dizesini döndürün. Örnek ifadeler:

      -- Returns bc.
      select substr('abc', 2);
      -- Returns b.
      select substr('abc', 2, 1);
      -- Returns bc.
      select substr('abc',-2 , 2);
    • Örnek 2: Bir giriş parametresi NULL olduğunda. Örnek ifade:

      -- Returns NULL.
      select substr('abc', null);

SUBSTRING

  • Sözdizimi

    string substring(string|binary <str>, int <start_position>[, int <length>])
  • Açıklama

    str dizesinin start_position konumundan başlayan ve uzunluğu length olan bir alt dizesini döndürür.

  • Parametreler

    • str: gereklidir. Bu parametre STRING veya BINARY türündedir.

    • start_position: gereklidir. Bu parametre INT türündedir. Başlangıç konumu 1 tabanlıdır. start_position 0 ise boş dize döndürülür. start_position negatif bir değer ise konum dizenin sonundan geriye doğru sayılır. Bu durumda -1 son karaktere karşılık gelir ve sayım geriye doğru sırayla ilerler.

    • length: isteğe bağlı. Bu parametre BIGINT türündedir. Alt dize uzunluğu 0'dan büyük olmalıdır.

  • Dönüş değeri

    Dönüş değeri STRING türündedir. Aşağıdaki kurallara uyar:

    • str STRING veya BINARY türünde değilse hata döndürülür.

    • length BIGINT türünde değilse veya 0'dan küçük ya da 0'a eşitse hata döndürülür.

    • length parametresi atlandığında str sonuna kadar olan alt dize döndürülür.

    • str, start_position veya length NULL ise NULL döndürülür.

  • Örnekler

    • Örnek 1: Bu örnek, belirtilen konumdan ve belirtilen uzunlukta abc dizesinin bir alt dizesini döndürür. Örnek ifadeler:

      -- Returns bc.
      select substring('abc', 2);
      -- Returns b.
      select substring('abc', 2, 1);
      -- Returns bc.
      select substring('abc',-2,2);
      -- Returns ab.
      select substring('abc',-3,2);
      -- Returns 001.
      substring(bin(2345), 2, 3);
    • Örnek 2: Bu örnek, bir giriş parametresinin NULL olduğu durumu gösterir. Örnek ifade:

      -- Returns NULL.
      select substring('abc', null, null);

SUBSTRING_INDEX

  • Sözdizimi

    string substring_index(string <str>, string <separator>, int <count>)
  • Açıklama

    Bu işlev, str dizesinden bir ayırıcının count-inci oluşumundan önceki veya sonraki bir alt dizeyi çıkarır. count pozitif ise ayırıcı arama soldan başlar. count negatif ise arama sağdan başlar. Bu işlev MaxCompute V2.0 uzantı işlevidir.

  • Parametreler

    • str: gereklidir. STRING türüdür. Çıkarılacak dizedir.

    • separator: gereklidir. STRING türü ayırıcı.

    • count: Gereklidir. Ayırıcının konumunu belirten bir INT değeridir.

  • Dönüş değeri

    İşlev STRING türünde bir değer döndürür. Herhangi bir giriş parametresi NULL ise işlev NULL döndürür.

  • Örnekler

    • Örnek 1: https://www.alibabacloud.com dizesinden çıkarım yapar. Örnek ifadeler:

      -- Returns https://www.alibabacloud.
      select substring_index('https://www.alibabacloud.com', '.', 2);
      -- Returns alibabacloud.com.
      select substring_index('https://www.alibabacloud.com', '.', -2);
    • Örnek 2: Bir giriş parametresi NULL. Örnek ifade:

      -- Returns NULL.
      select substring_index('https://www.alibabacloud.com', null, 2);

TO_CHAR

  • Sözdizimi

    string to_char(boolean <value>)
    string to_char(bigint <value>)
    string to_char(double <value>)
    string to_char(decimal <value>)
  • Açıklama

    BOOLEAN, BIGINT, DECIMAL veya DOUBLE türündeki değerleri STRING temsillerine dönüştürür.

  • Parametreler

    value: gereklidir. BOOLEAN, BIGINT, DECIMAL veya DOUBLE türünde bir değer.

  • Dönüş değeri

    STRING türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:

    • value BOOLEAN, BIGINT, DECIMAL veya DOUBLE türünde değilse işlev hata döndürür.

    • value NULL ise işlev NULL döndürür.

  • Örnekler

    • Örnek 1: Değerleri STRING temsilcilerine dönüştürün. Örnek ifade:

      -- Returns 123.
      select to_char(123);
      -- Returns TRUE.
      select to_char(true);
      -- Returns 1.23.
      select to_char(1.23);
    • Örnek 2: Giriş parametresi NULL. Örnek ifade:

      -- Returns NULL.
      select to_char(null);

TO_JSON

  • Sözdizimi

    string to_json(<expr>)
  • Açıklama

    Belirtilen karmaşık veri türündeki expr ifadesini JSON dizesine dönüştürür.

  • Parametreler

    expr: gereklidir. ARRAY, MAP veya STRUCT türünde bir ifade.

    Not

    Giriş ifadesi STRUCT türündeyse (struct<key1:value1, key2:value2>), aşağıdaki noktalara dikkat edin:

    • İfadeyi JSON dizesine dönüştürürken tüm anahtarlar küçük harfe dönüştürülür.

    • Bir value null ise bu value değerine ait anahtar-değer çifti döndürülen JSON dizesine dahil edilmez. Örneğin, value2 null ise key2:value2 döndürülen JSON dizesine dahil edilmez.

  • Dönüş değeri

    Bir JSON dizesi döndürülür.

  • Örnekler

    • Örnek 1: Belirtilen karmaşık veri türündeki bir ifadeyi JSON dizesine dönüştürün. Örnek ifade:

      -- The return value is {"a":1,"b":2}. 
      select to_json(named_struct('a', 1, 'b', 2));
      -- The return value is {"time":"26/08/2015"}. 
      select to_json(named_struct('time', "26/08/2015"));
      -- The return value is [{"a":1,"b":2}]. 
      select to_json(array(named_struct('a', 1, 'b', 2)));
      -- The return value is {"a":{"b":1}}. 
      select to_json(map('a', named_struct('b', 1)));
      -- The return value is {"a":1}. 
      select to_json(map('a', 1));
      -- The return value is [{"a":1}]. 
      select to_json(array((map('a', 1))));
    • Örnek 2: Giriş ifadesi STRUCT türündedir. Örnek ifade:

      -- The return value is {"a":"B"}. If the expression of the STRUCT type is converted into a JSON string, all keys are converted into lowercase letters. 
      select to_json(named_struct("A", "B"));
      -- The return value is {"k2":"v2"}. The key-value pair to which null belongs is not included in the JSON string that is returned. 
      select to_json(named_struct("k1", cast(null as string), "k2", "v2"));

TOLOWER

  • Sözdizimi

    string tolower(string <source>)
  • Açıklama

    source dizesindeki büyük harfli İngilizce karakterleri küçük harfe dönüştürür.

  • Parametreler

    source: gereklidir. STRING türünde bir değer. Giriş bir BIGINT, DOUBLE, DECIMAL veya DATETIME değeri ise örtük olarak STRING türüne dönüştürülür. Bu işlev yalnızca İngilizce karakterler üzerinde çalışır.

  • Dönüş değeri

    STRING türünde bir değer döndürür. Döndürülen değer aşağıdaki kurallara dayanır:

    • source veri türü STRING, BIGINT, DOUBLE, DECIMAL veya DATETIME değilse hata döndürülür.

    • source NULL ise NULL döndürülür.

  • Örnekler

    • Örnek 1: Büyük harfleri küçük harfe dönüştürün. Örnek ifadeler:

      -- Returns abcd.
      select tolower('aBcd');
    • Örnek 2: Giriş parametresi NULL. Örnek ifade:

      -- Returns NULL.
      select tolower(null);

TOUPPER

  • Sözdizimi

    string toupper(string <source>)
  • Açıklama

    source dizesindeki küçük harfli karakterleri karşılık gelen büyük harfli karakterlere dönüştürür.

  • Parametreler

    source: gereklidir. STRING türü. Giriş BIGINT, DOUBLE, DECIMAL veya DATETIME ise örtük olarak STRING'e dönüştürülür. Yalnızca İngilizce karakterleri destekler.

  • Dönüş değeri

    STRING türünde bir değer döndürür. Döndürülen değer aşağıdaki kurallara dayanır:

    • source veri türü STRING, BIGINT, DOUBLE, DECIMAL veya DATETIME değilse hata döndürülür.

    • source NULL ise NULL döndürülür.

  • Örnekler

    • Örnek 1: Küçük harfleri büyük harfe dönüştürün. Örnek ifadeler:

      -- Returns ABCD.
      select toupper('aBcd');
    • Örnek 2: Giriş parametresi NULL. Örnek ifade:

      -- Returns NULL.
      select toupper(null);

TRANSLATE

  • Sözdizimi

    string translate(string|varchar <str1>, string|varchar <str2>, string|varchar <str3>)
  • Açıklama

    str1 içindeki str2 içinde görünen her karakteri str3 içindeki karşılık gelen karakterle değiştirir. Eşleşme bulunmazsa değiştirme yapılmaz. Bu işlev MaxCompute V2.0 sürümünde bir uzantıdır.

  • Dönüş değeri

    STRING döndürür. Herhangi bir giriş parametresi NULL ise işlev NULL döndürür.

  • Örnekler

    • Örnek 1: ababab içindeki abab içinde görünen her karakteri cd içindeki karşılık gelen karakterle değiştirin. Örnek ifade:

      -- Returns cdcdcd.
      select translate('ababab','abab','cd');
    • Örnek 2: ababab içindeki abab içinde görünen her karakteri cdefg içindeki karşılık gelen karakterle değiştirin. Örnek ifade:

      -- Returns cdcdcd.
      select translate('ababab','abab','cdefg');
    • Örnek 3: Bir giriş parametresi NULL. Örnek ifade:

      -- Returns NULL.
      select translate('ababab','cd',null);

TRIM

  • Sözdizimi

    string trim(string <str>[,<trimChars>])
    string trim([BOTH] [<trimChars>] from <str>)
  • Açıklama

    str dizesinin her iki ucundan karakterleri kaldırır:

    • trimChars belirtmezseniz işlev varsayılan olarak boşlukları kaldırır.

    • trimChars belirtirseniz işlev trimChars içindeki karakterleri bir küme olarak değerlendirir ve str dizesinin hem sol hem de sağ ucundan yalnızca bu kümedeki karakterlerden oluşan mümkün olan en uzun alt dizeleri kaldırır.

  • Parametreler

    • str: gereklidir. STRING türü. Kırpılacak dizedir. Giriş BIGINT, DECIMAL, DOUBLE veya DATETIME ise örtük olarak STRING'e dönüştürülür.

    • trimChars: isteğe bağlı. STRING türü. Kaldırılacak karakterler.

  • Dönüş değeri

    STRING türü döndürür. Dönüş değeri aşağıdaki kurallara uyar:

    • str STRING, BIGINT, DOUBLE, DECIMAL veya DATETIME değilse hata döndürür.

    • str veya trimChars NULL ise NULL döndürür.

  • Örnekler

    • Örnek 1: yxTxyomxx dizesinin her iki ucundaki boşlukları kaldırın. Örnek ifadeler:

      -- Returns yxTxyomxx.
      select trim(' yxTxyomxx ');
      -- Equivalent to:
      select trim(both from ' yxTxyomxx ');
      select trim(from ' yxTxyomxx ');
    • Örnek 2: yxTxyomxx dizesinin her iki ucundaki xy kümesine ait tüm karakterleri kaldırın.

      -- Returns Txyom. Any x or y on either end is removed.
      select trim('yxTxyomxx', 'xy');
      -- Equivalent to:
      select trim(both 'xy' from 'yxTxyomxx');
      select trim('xy' from 'yxTxyomxx');
    • Örnek 3: Giriş parametresi NULL. Örnek ifadeler:

      -- Returns NULL.
      select trim(null);
      select trim('yxTxyomxx', null);

URL_DECODE

  • Sözdizimi

    string url_decode(string <input>[, string <encoding>])
  • Açıklama

    Giriş dizesini application/x-www-form-urlencoded MIME formatından standart karakterlere dönüştürür. Bu işlev url_encode işlevinin tersidir. Kodlama kuralları aşağıdaki gibidir:

    • a–z ve A–Z değişmez.

    • Nokta (.), kısa çizgi (-), yıldız (*) ve alt çizgi (_) değişmez.

    • Artı işareti (+) boşluğa dönüşür.

    • %xy formatındaki diziler bayt değerlerine dönüştürülür. Ardışık baytlar, belirtilen encoding adı kullanılarak dizelere kodu çözülür.

    • Diğer tüm karakterler değişmez.

  • Parametreler

    • input: Bu parametre gereklidir ve STRING türündedir. Giriş dizesini temsil eder.

    • encoding: Bu parametre isteğe bağlıdır ve kodlama formatını belirtir. GBK ve UTF-8 gibi formatları destekler. Belirtilmezse varsayılan kodlama UTF-8'dir.

  • Dönüş değeri

    Bu işlev UTF-8 kodlamalı STRING türü döndürür. input veya encoding parametresi NULL ise işlev NULL döndürür.

  • Örnek

    -- Returns examplefor url_decode:// (fdsf).
    select url_decode('%E7%A4%BA%E4%BE%8Bfor+url_decode%3A%2F%2F+%28fdsf%29');
    -- Returns Example for URL_DECODE:// dsf(fasfs).
    select url_decode('Example+for+url_decode+%3A%2F%2F+dsf%28fasfs%29', 'GBK');

URL_ENCODE

  • Sözdizimi

    string url_encode(string <input>[, string <encoding>])
  • Açıklama

    Bir giriş dizesini application/x-www-form-urlencoded MIME biçiminde kodlar. Kodlama kuralları:

    • a–z ve A–Z harfleri değişmez.

    • Nokta (.), kısa çizgi (-), yıldız (*) ve alt çizgi (_) karakterleri değişmez.

    • Boşluklar artı işaretine (+) dönüştürülür.

    • Diğer tüm karakterler, belirtilen encoding kullanılarak bayt değerlerine dönüştürülür. Her bayt, %xy şeklinde gösterilir; burada xy karakterin onaltılık gösterimidir.

  • Parametreler

    • input: Zorunludur. STRING türündedir. Kodlanacak dizedir.

    • encoding: İsteğe bağlıdır. Kodlama biçimini belirtir. Desteklenen biçimler GBK ve UTF-8'dir. Belirtilmediğinde varsayılan değer UTF-8'dir.

  • Dönüş değeri

    STRING döndürür. input veya encoding NULL ise NULL döndürür.

  • Örnek

    -- Returns %E7%A4%BA%E4%BE%8Bfor+url_encode%3A%2F%2F+%28fdsf%29.
    select url_encode('examplefor url_encode:// (fdsf)');
    -- Returns Example+for+url_encode+%3A%2F%2F+dsf%28fasfs%29.
    select url_encode('Example for url_encode:// dsf(fasfs)', 'GBK');

Referanslar

Yerleşik işlevlerin ötesine geçmek için kullanıcı tanımlı işlevler (UDF'ler) oluşturun. Daha fazla bilgi için bkz. Genel Bakış.