All Products
Search
Document Center

MaxCompute:Fungsi string

Last Updated:May 28, 2026

MaxCompute menyediakan fungsi string untuk memotong, menggabungkan, mengonversi, membandingkan, dan mencari data string dalam tabel.

SQL MaxCompute mendukung fungsi string berikut.

Function

Description

ASCII

Mengembalikan kode ASCII dari karakter pertama dalam sebuah string.

CHAR_MATCHCOUNT

Menghitung jumlah karakter dari string A yang muncul dalam string B.

CHR

Mengonversi kode ASCII menjadi karakter.

CONCAT

Menggabungkan string.

CONCAT_WS

Menggabungkan semua string input menggunakan delimiter yang ditentukan.

DECODE

Mendekode string menggunakan format encoding yang ditentukan.

ENCODE

Mengencode string menggunakan format encoding yang ditentukan.

FIND_IN_SET

Menemukan posisi string tertentu dalam string yang dipisahkan koma.

FORMAT_NUMBER

Mengonversi angka menjadi string dalam format yang ditentukan.

FROM_CHARSET

Mengonversi data biner dalam format encoding tertentu menjadi string UTF-8.

FROM_JSON

Mengembalikan data tipe ARRAY, MAP, atau STRUCT berdasarkan string JSON dan format output yang diberikan.

GET_JSON_OBJECT

Mengekstrak string tertentu dari string JSON standar menggunakan metode yang ditentukan.

INITCAP

Mengonversi string ke bentuk title case di mana setiap kata dimulai dengan huruf kapital diikuti huruf kecil, dipisahkan spasi.

INSTR

Menemukan posisi string A dalam string B.

IS_ENCODING

Menentukan apakah string dapat dikonversi dari set karakter A ke set karakter B.

JSON_TUPLE

Mengekstrak string yang sesuai dengan serangkaian kunci input dari string JSON standar.

KEYVALUE

Memisahkan string menjadi pasangan kunci-nilai, memisahkan pasangan tersebut, dan mengembalikan nilai yang sesuai dengan kunci tertentu.

KEYVALUE_TUPLE

Memisahkan string menjadi beberapa pasangan kunci-nilai, memisahkan pasangan tersebut, dan mengembalikan nilai yang sesuai dengan beberapa kunci tertentu.

LENGTH

Menghitung panjang string.

LENGTHB

Menghitung panjang byte dari string.

LOCATE

Menemukan posisi substring tertentu dalam string.

LPAD

Menambahkan padding di sebelah kiri string hingga mencapai panjang tertentu.

LTRIM

Menghapus karakter dari ujung kiri string.

MASK_HASH

Mengembalikan nilai hash yang dihitung dari ekspresi string.

MD5

Menghitung hash MD5 dari string.

PARSE_URL

Mengurai URL dan mengembalikan informasi tentang bagian tertentu.

PARSE_URL_TUPLE

Mengurai URL dan mengembalikan informasi tentang beberapa bagian.

REGEXP_COUNT

Menghitung substring yang cocok dengan pola tertentu mulai dari posisi tertentu.

REGEXP_EXTRACT

Memisahkan string menjadi grup berdasarkan pola tertentu dan mengembalikan string dari grup tertentu.

REGEXP_EXTRACT_ALL

Menemukan semua substring yang cocok dengan pola ekspresi reguler dalam string dan mengembalikannya sebagai array.

REGEXP_INSTR

Mengembalikan posisi awal atau akhir substring yang cocok dengan pola tertentu untuk kemunculan tertentu mulai dari posisi tertentu.

REGEXP_REPLACE

Mengganti substring yang cocok dengan pola tertentu untuk kemunculan tertentu dengan string lain.

REGEXP_SUBSTR

Mengembalikan substring yang cocok dengan pola tertentu untuk kemunculan tertentu mulai dari posisi tertentu.

REPEAT

Mengembalikan string yang diulang sejumlah kali tertentu.

REPLACE

Mengganti substring yang cocok dengan string tertentu dengan string lain.

REVERSE

Mengembalikan kebalikan dari string.

RPAD

Menambahkan padding di sebelah kanan string hingga mencapai panjang tertentu.

RTRIM

Menghapus karakter dari ujung kanan string.

SOUNDEX

Mengonversi string standar menjadi string SOUNDEX.

SPACE

Menghasilkan string yang terdiri atas spasi.

SPLIT

Memisahkan string menggunakan delimiter dan mengembalikan array.

SPLIT_PART

Memisahkan string menggunakan delimiter dan mengembalikan bagian tertentu.

SUBSTR

Mengembalikan substring dari string bertipe STRING mulai dari posisi tertentu dengan panjang tertentu.

SUBSTRING

Mengembalikan substring dari string bertipe STRING atau BINARY mulai dari posisi tertentu dengan panjang tertentu.

SUBSTRING_INDEX

Mengekstrak substring sebelum atau sesudah kemunculan ke-n dari delimiter.

TO_CHAR

Mengonversi nilai BOOLEAN, BIGINT, DECIMAL, atau DOUBLE ke representasi STRING-nya.

TO_JSON

Mengonversi tipe kompleks tertentu menjadi string JSON.

TOLOWER

Mengonversi huruf kapital bahasa Inggris dalam string menjadi huruf kecil.

TOUPPER

Mengonversi huruf kecil bahasa Inggris dalam string menjadi huruf kapital.

TRANSLATE

Mengganti semua kemunculan string A dalam string B dengan string C.

TRIM

Menghapus karakter dari kedua ujung string.

URL_DECODE

Mengonversi string dari format application/x-www-form-urlencoded MIME ke karakter standar.

URL_ENCODE

Mengencode string dalam format application/x-www-form-urlencoded MIME.

Batasan

Fungsi berikut hanya mendukung karakter bahasa Inggris:

  • TRIM/RTRIM/LTRIM: Parameter trimChars hanya mendukung karakter bahasa Inggris.

  • REVERSE: Hanya mendukung karakter bahasa Inggris dalam mode Hive.

  • SOUNDEX: Hanya mengonversi karakter bahasa Inggris.

  • TOLOWER: Mengonversi huruf kapital bahasa Inggris dalam string menjadi huruf kecil.

  • TOUPPER: Mengonversi huruf kecil bahasa Inggris dalam string menjadi huruf kapital.

  • INITCAP: Mengonversi huruf pertama bahasa Inggris setiap kata menjadi huruf kapital dan sisanya menjadi huruf kecil.

ASCII

  • Sintaksis

    bigint ascii(string <str>)
  • Deskripsi

    Mengembalikan kode ASCII dari karakter pertama dalam string str.

  • Parameter

    str: wajib. Tipe STRING. Jika input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, akan dikonversi secara implisit ke tipe STRING sebelum perhitungan.

  • Nilai kembali

    Mengembalikan nilai bertipe BIGINT. Nilai kembali mengikuti aturan berikut:

    • Jika str bukan bertipe STRING, BIGINT, DOUBLE, DECIMAL, atau DATETIME, akan dikembalikan error.

    • Jika str bernilai NULL, akan dikembalikan NULL.

  • Contoh

    • Contoh 1: Mengembalikan kode ASCII dari karakter pertama dalam string abcde. Pernyataan contoh:

      -- Mengembalikan 97.
      select ascii('abcde'); 
    • Contoh 2: Parameter input bernilai NULL. Pernyataan contoh:

      -- Mengembalikan NULL.
      select ascii(null);

CHAR_MATCHCOUNT

  • Sintaksis

    bigint char_matchcount(string <str1>, string <str2>)
  • Deskripsi

    Menghitung berapa banyak karakter dalam str1 yang muncul dalam str2.

  • Parameter

    str1 dan str2: wajib. Tipe STRING. Kedua string harus merupakan string UTF-8 yang valid. Jika ditemukan karakter tidak valid (tidak di-encode Unicode) selama perbandingan, akan dikembalikan nilai negatif.

  • Nilai kembali

    Mengembalikan nilai bertipe BIGINT. Jika str1 atau str2 bernilai NULL, akan dikembalikan NULL.

  • Contoh

    • Contoh 1: Hitung berapa banyak karakter dari string aabc yang muncul dalam abcde. Pernyataan contoh:

      -- Mengembalikan 4.
      select char_matchcount('aabc','abcde');
    • Contoh 2: Salah satu parameter input bernilai NULL. Pernyataan contoh:

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

CHR

  • Sintaksis

    string chr(bigint <ascii>)
  • Deskripsi

    Mengonversi kode ASCII tertentu menjadi karakter.

  • Parameter

    ascii: wajib. Nilai ASCII bertipe BIGINT. Rentang nilai valid: 0 hingga 127. Jika input bertipe STRING, DOUBLE, atau DECIMAL, akan dikonversi secara implisit ke tipe BIGINT sebelum perhitungan.

  • Nilai kembali

    Mengembalikan nilai bertipe STRING. Nilai kembali mengikuti aturan berikut:

    • Jika nilai ascii berada di luar rentang valid, akan dikembalikan error.

    • Jika ascii bukan bertipe BIGINT, STRING, DOUBLE, atau DECIMAL, akan dikembalikan error.

    • Jika ascii bernilai NULL, akan dikembalikan NULL.

  • Contoh

    • Contoh 1: Konversi kode ASCII 100 menjadi karakter. Pernyataan contoh:

      -- Mengembalikan d.
      select chr(100);
    • Contoh 2: Parameter input bernilai NULL. Pernyataan contoh:

      -- Mengembalikan NULL.
      select chr(null);
    • Contoh 3: Input adalah karakter bertipe STRING. Pernyataan contoh:

      --Input dikonversi secara implisit ke tipe BIGINT untuk operasi, yang mengembalikan 'd'.
      select chr('100');

CONCAT

  • Sintaksis

    array<T> concat(array<T> <a>, array<T> <b>[,...])
    string concat(string <str1>, string <str2>[,...])
  • Deskripsi

    • Array sebagai input: Menggabungkan semua elemen dari beberapa array dan mengembalikan array baru.

    • String sebagai input: Menggabungkan beberapa string dan mengembalikan string baru.

  • Parameter

    • a dan b: wajib. Parameter ini menentukan array. T dalam array<T> menentukan tipe data elemen dalam array. Elemen dapat bertipe data apa pun. Elemen dalam Array a dan elemen dalam Array b harus bertipe data yang sama. Elemen null juga terlibat dalam operasi.

    • str1 dan str2: wajib. Nilai bertipe STRING. Jika nilai input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, akan dikonversi secara implisit menjadi nilai bertipe STRING sebelum perhitungan. Jika nilai input bertipe data lain, akan dikembalikan error.

  • Nilai kembali

    • Nilai bertipe ARRAY dikembalikan. Jika salah satu array input bernilai null, null dikembalikan.

    • Nilai bertipe STRING dikembalikan. Jika tidak ada parameter input yang dikonfigurasi atau parameter input diatur ke null, null dikembalikan.

  • Contoh

    • Contoh 1: Gabungkan semua elemen dari array(10, 20) dan array(20, -20). Pernyataan contoh:

      -- Nilai kembali adalah [10, 20, 20, -20]. 
      select concat(array(10, 20), array(20, -20));
    • Contoh 2: Salah satu array input berisi elemen null. Pernyataan contoh:

      -- Nilai kembali adalah [10, null, 20, -20]. 
      select concat(array(10, null), array(20, -20));
    • Contoh 3: Salah satu array input bernilai null. Pernyataan contoh:

      -- Nilai kembali adalah null. 
      select concat(array(10, 20), null);
    • Contoh 4: Gabungkan string aabc dan abcde. Pernyataan contoh:

      -- Nilai kembali adalah aabcabcde. 
      select concat('aabc','abcde');
    • Contoh 5: Input kosong. Pernyataan contoh:

      -- Nilai kembali adalah null. 
      select concat();
    • Contoh 6: Salah satu string input bernilai null. Pernyataan contoh:

      -- Nilai kembali adalah null. 
      select concat('aabc', 'abcde', null);

CONCAT_WS

  • Sintaksis

    string concat_ws(string <separator>, string <str1>, string <str2>[,...])
    string concat_ws(string <separator>, array<string> <a>)
  • Deskripsi

    Mengembalikan string yang dibentuk dengan menggabungkan semua string input atau elemen array menggunakan delimiter yang ditentukan. Fungsi ini merupakan ekstensi di MaxCompute V2.0.

  • Parameter

    • separator: wajib. Delimiter bertipe STRING.

    • str1 dan str2: Harus menentukan minimal dua string. Bertipe STRING. Jika input bertipe BIGINT, DECIMAL, DOUBLE, atau DATETIME, akan dikonversi secara implisit ke tipe STRING sebelum perhitungan.

    • a: wajib. Bertipe ARRAY. Elemen array harus bertipe STRING.

  • Nilai kembali

    Mengembalikan nilai bertipe STRING atau STRUCT. Nilai kembali mengikuti aturan berikut:

    • Jika str1 atau str2 bukan bertipe STRING, BIGINT, DECIMAL, DOUBLE, atau DATETIME, akan dikembalikan error.

    • Jika tidak ada parameter input yang diberikan atau ada parameter input yang bernilai NULL, akan dikembalikan NULL.

  • Contoh

    • Contoh 1: Gabungkan string name dan hanmeimei menggunakan :. Pernyataan contoh:

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

      -

    • Contoh 2: Salah satu parameter input bernilai NULL. Pernyataan contoh:

      -- Mengembalikan NULL.
      select concat_ws(':','avg',null,'34');
    • Contoh 3: Gabungkan elemen dalam array array('name', 'hanmeimei') menggunakan :. Pernyataan contoh:

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

DECODE

  • Sintaksis

    STRING DECODE(BINARY <str>, STRING <charset>)
  • Deskripsi

    Mendekode str menggunakan format yang ditentukan oleh charset.

  • Parameter

    Parameter

    Required

    Description

    str

    Yes

    Bertipe BINARY. String yang akan didekode.

    charset

    Yes

    Bertipe STRING. Format encoding. Nilai valid: UTF-8, UTF-16, UTF-16LE, UTF-16BE, ISO-8859-1, US-ASCII.

    Catatan

    Format encoding ISO-8859-1 dan US-ASCII saat ini hanya mendukung karakter bahasa Inggris, bukan karakter Tionghoa.

  • Nilai kembali

    Mengembalikan STRING. Jika str atau charset bernilai NULL, akan dikembalikan NULL.

  • Contoh

    • Contoh 1: Encode dan decode string English Sample berdasarkan format UTF-8. Pernyataan contoh:

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

      Mengembalikan:

      +-----+| _c0 |+-----+| English Sample |+-----+
    • Contoh 2: Atur salah satu parameter input ke NULL. Pernyataan contoh:

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

      Mengembalikan:

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

ENCODE

  • Sintaksis

    binary encode(string <str>, string <charset>)
  • Deskripsi

    Mengencode str menggunakan format yang ditentukan oleh charset.

  • Parameter

    • str: wajib. Bertipe STRING. String yang akan di-re-encode.

    • charset: wajib. Bertipe STRING. Format encoding. Nilai valid: UTF-8, UTF-16, UTF-16LE, UTF-16BE, ISO-8859-1, US-ASCII.

  • Nilai kembali

    Mengembalikan tipe BINARY. Jika str atau charset bernilai NULL, akan dikembalikan NULL.

  • Contoh

    • Contoh 1: Encode string abc dalam format UTF-8. Pernyataan contoh:

      -- Mengembalikan abc.
      select encode("abc", "UTF-8");
    • Contoh 2: Encode string abc dalam format UTF-16BE. Pernyataan contoh:

      -- Mengembalikan =00a=00b=00c.
      select encode("abc", "UTF-16BE");
    • Contoh 3: Salah satu parameter input bernilai NULL. Pernyataan contoh:

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

FIND_IN_SET

  • Sintaksis

    BIGINT FIND_IN_SET(STRING <str1>, STRING <str2>[, STRING <delimiter>])
  • Deskripsi

    Menemukan posisi string str1 dalam string str2 yang dipisahkan oleh delimiter, dihitung mulai dari 1.

  • Parameter

    Parameter

    Required

    Description

    str1

    Yes

    Bertipe STRING. String yang dicari.

    str2

    Yes

    Bertipe STRING. String yang dipisahkan oleh delimiter.

    delimiter

    No

    Konstanta STRING. Default adalah koma (,). Delimiter dapat berupa satu karakter atau string.

  • Nilai kembali

    Mengembalikan tipe BIGINT. Nilai kembali mengikuti aturan berikut:

    • Jika str2 tidak mengandung str1 atau str1 mengandung delimiter, dikembalikan 0.

    • Jika str1 atau str2 bernilai NULL, dikembalikan NULL.

  • Contoh

    • Contoh 1: Temukan posisi string ab dalam string abc,hello,ab,c, yang dipisahkan koma (,). Pernyataan contoh:

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

      Mengembalikan:

      +------------+
      | pos        |
      +------------+
      | 3          |
      +------------+
    • Contoh 2: Temukan posisi string hi dalam string abc,hello,ab,c yang dipisahkan koma (,). Pernyataan contoh:

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

      Mengembalikan:

      +------------+
      | pos        |
      +------------+
      | 0          |
      +------------+
    • Contoh 3: Temukan posisi string ab dalam string yang dipisahkan garis bawah (_) abc_hello_ab_c. Pernyataan contoh:

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

      Mengembalikan:

      +------------+
      | pos        |
      +------------+
      | 3          |
      +------------+
    • Contoh 4: Parameter input str1 atau str2 bernilai NULL. Pernyataan contoh:

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

      Mengembalikan:

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

FORMAT_NUMBER

  • Sintaksis

    STRING FORMAT_NUMBER(DOUBLE|BIGINT|INT|SMALLINT|TINYINT|FLOAT|DECIMAL|STRING <expr1>, INT <expr2>)
  • Deskripsi

    Mengonversi expr1 menjadi string yang diformat sesuai dengan expr2.

  • Parameter

  • expr1: wajib. Nilai bertipe FLOAT, DOUBLE, atau DECIMAL. Parameter ini menentukan ekspresi yang ingin Anda format.

  • expr2: wajib. Nilai bertipe INT. Nilai valid: 0 hingga 340. Parameter ini menentukan jumlah tempat desimal yang ingin Anda pertahankan. Parameter ini juga dapat dinyatakan dalam format seperti #,###,###.##. Jumlah tempat desimal yang dikembalikan bervariasi berdasarkan nilai parameter ini.

  • Nilai kembali

    Nilai bertipe STRING dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika nilai expr2 lebih besar dari 0 dan kurang dari atau sama dengan 340, nilai yang dibulatkan ke jumlah tempat desimal yang ditentukan dikembalikan.

    • Jika nilai expr2 adalah 0, nilai kembali hanya berisi bagian integer dan tidak mengandung titik desimal atau bagian desimal.

    • Jika nilai expr2 kurang dari 0 atau lebih dari 340, error dikembalikan.

    • Jika expr1 atau expr2 kosong atau diatur ke null, null dikembalikan.

  • Contoh

    • Contoh 1: Format angka sesuai ketentuan. Pernyataan contoh:

      -- Mengembalikan 5.230.
      SELECT FORMAT_NUMBER(5.230134523424545456,3);
      -- Mengembalikan 12,332.123.
      SELECT FORMAT_NUMBER(12332.123456, '#,###,###,###.###');
    • Contoh 2: Salah satu parameter input kosong atau NULL. Pernyataan contoh:

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

FROM_CHARSET

  • Sintaksis

    STRING FROM_CHARSET(binary <source>, string <source_charset>, [string <mode>])
  • Deskripsi

    FROM_CHARSET mengonversi data biner yang di-encode non-UTF-8 menjadi string UTF-8 untuk perhitungan selanjutnya.

  • Parameter

    • source: wajib. Nilai bertipe BINARY. Parameter ini menentukan data biner yang ingin Anda konversi.

    • source_charset: wajib. Nilai bertipe STRING. Parameter ini menentukan format encoding asli dari data biner yang ditentukan oleh source. Nilai valid: UTF-8, UTF-16, UTF-16LE, UTF-16BE, ISO-8859-1, US-ASCII, GB2312, GBK, dan GB18030.

    • mode: opsional. Nilai bertipe STRING. Parameter ini menentukan mode pemrosesan jika karakter tidak dapat dikonversi saat fungsi FROM_CHARSET mengonversi data biner yang ditentukan oleh source menjadi string dalam format encoding yang ditentukan. Nilai valid:

      • NONE: melaporkan error. Tidak ada pemrosesan yang dilakukan. Ini adalah nilai default.

      • TRANSLIT: mengganti karakter dengan karakter serupa dalam format encoding yang ditentukan.

      • IGNORE: mengabaikan error dan melanjutkan menjalankan perintah.

  • Nilai kembali

    Mengembalikan tipe STRING yang di-encode UTF-8. Saat parameter bernilai NULL atau string kosong, nilai kembali mengikuti aturan berikut:

    • Jika ada parameter input yang bernilai NULL, mengembalikan NULL.

    • Jika ada parameter input yang merupakan string kosong, mengembalikan error.

  • Contoh

    • Contoh 1: Konversi data biner yang di-encode UTF-8 menjadi string yang di-encode UTF-8.

      SELECT FROM_CHARSET(unhex('e58aa0e6b2b9e9949fe696a4e68bb70a'),'UTF-8', 'TRANSLIT');

      Mengembalikan:

      +------------+| _c0        |+------------+| 加油锟斤拷
           |+------------+
    • Contoh 2: Konversi data biner yang di-encode GBK menjadi string yang di-encode UTF-8.

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

      Mengembalikan:

      +------------+| _c0        |+------------+| 哈哈好の       |+------------+
    • Contoh 3: Jika parameter input bernilai null, null dikembalikan.

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

      Mengembalikan:

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

FROM_JSON

  • Sintaksis

    from_json(<jsonStr>, <schema>)
  • Deskripsi

    Mengembalikan data bertipe ARRAY, MAP, atau STRUCT berdasarkan string JSON jsonStr dan format output schema.

  • Parameter

    • jsonStr: wajib. String JSON yang Anda masukkan.

    • schema: wajib. Skema string JSON. Nilai parameter ini harus dalam format yang sama seperti pada pernyataan pembuatan tabel, seperti array<bigint>, map<string, array<string>>, atau struct<a:int, b:double, `C`:map<string,string>>.

      Catatan

      Kunci dalam struct bersifat case-sensitive. Anda juga dapat menentukan struct dalam format a BIGINT, b DOUBLE, yang setara dengan STRUCT<a:BIGINT, b:DOUBLE>.

      Tabel berikut menjelaskan pemetaan antara tipe data JSON dan tipe data MaxCompute.

      Tipe data JSON

      Tipe data MaxCompute

      OBJECT

      STRUCT, MAP, dan STRING

      ARRAY

      ARRAY dan STRING

      NUMBER

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

      BOOLEAN

      BOOLEAN dan STRING

      STRING

      STRING, CHAR, VARCHAR, BINARY, DATE, dan DATETIME

      NULL

      Semua tipe

      Catatan

      String JSON bertipe OBJECT dan ARRAY diurai semaksimal mungkin. Jika tipe data string JSON tidak dipetakan ke tipe data MaxCompute apa pun, string JSON tersebut diabaikan. Untuk memudahkan penggunaan, semua tipe data JSON dapat dikonversi menjadi tipe data STRING yang didukung MaxCompute. Saat Anda mengonversi string JSON bertipe NUMBER menjadi nilai bertipe FLOAT, DOUBLE, atau DECIMAL, presisi nilai tersebut tidak dapat dijamin. Kami menyarankan Anda mengonversi string JSON menjadi nilai bertipe STRING terlebih dahulu, lalu mengonversi nilai yang diperoleh menjadi nilai bertipe FLOAT, DOUBLE, atau DECIMAL.

  • Nilai kembali

    Nilai bertipe ARRAY, MAP, atau STRUCT dikembalikan.

  • Contoh

    • Contoh 1: Konversi string JSON tertentu menjadi nilai tipe data tertentu. Pernyataan contoh:

      -- Nilai kembali adalah {"a":1,"b":0.8}. 
      select from_json('{"a":1, "b":0.8}', 'a int, b double');
      -- Nilai kembali adalah {"time":"26/08/2015"}. 
      select from_json('{"time":"26/08/2015"}', 'time string');
      -- Nilai kembali adalah {"a":1,"b":0.8}. 
      select from_json('{"a":1, "b":0.8}', 'a int, b double, c string');
      -- Nilai kembali adalah [1,2,3]. 
      select from_json('[1, 2, 3, "a"]', 'array<bigint>');
      -- Nilai kembali adalah {"d":"v","a":"1","b":"[1,2,3]","c":"{}"}. 
      select from_json('{"a":1,"b":[1,2,3],"c":{},"d":"v"}', 'map<string, string>');
    • Contoh 2: Gunakan fungsi map_keys dan from_json untuk mendapatkan semua kunci dalam string JSON. Anda juga dapat menggunakan JSON_KEYS untuk tujuan yang sama. Pernyataan contoh:

      -- Nilai kembali adalah ["a","b"]. 
      select map_keys(from_json('{"a":1,"b":2}','map<string,string>'));

GET_JSON_OBJECT

Catatan penggunaan

Fungsi ini digunakan untuk mengekstrak string tertentu dari string JSON standar dengan menggunakan JSONPath. Fungsi ini mendukung parameter input dengan tipe data berikut:

  • Tipe JSON: Jika parameter input bertipe JSON, ekspresi JSONPath standar digunakan.

  • Tipe STRING: Jika parameter input bertipe STRING, ekspresi JSONPath asli digunakan.

Catatan

  • Ekspresi JSONPath yang digunakan saat parameter input bertipe JSON dan yang digunakan saat parameter input bertipe STRING mengikuti aturan yang berbeda. Hal ini dapat menyebabkan masalah ketidakcocokan.

  • Fungsi GET_JSON_OBJECT tidak mendukung sintaksis ekspresi JSONPath.

Parameter input bertipe data JSON

  • Sintaksis

    string get_json_object(json <json>, string <json_path>)
  • Deskripsi

    Mengekstrak satu string dari string JSON standar berdasarkan JSON PATH.

  • Parameter

    • json: wajib. String JSON dari mana Anda ingin mengekstrak satu string.

    • json_path: wajib. Ekspresi JSONPath berdasarkan mana Anda ingin mengekstrak satu string.

  • Nilai kembali

    Nilai bertipe STRING dikembalikan.

  • Contoh

    • Contoh 1: Ekstrak nilai yang sesuai dengan kunci a dari string JSON.

      SELECT get_json_object(json '{"a":1, "b":2}', '$.a');

      Mengembalikan:

      +-----+| _c0 |+-----+| 1   |+-----+
    • Contoh 2: Ekstrak nilai yang sesuai dengan kunci c dari string JSON.

      SELECT get_json_object(json '{"a":1, "b":2}', '$.c');

      Mengembalikan:

      +-----+| _c0 |+-----+| NULL |+-----+
    • Contoh 3: Jika jalur JSON yang tidak valid ditentukan, nilai kembali adalah NULL.

      SELECT get_json_object(json '{"a":1, "b":2}', '$invalid_json_path');

      Mengembalikan:

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

Parameter input bertipe data STRING

  • Sintaksis

    string get_json_object(string <json>, string <path>)
  • Deskripsi

    Mengekstrak satu string dari string JSON standar berdasarkan path. Data asli dibaca setiap kali fungsi ini dipanggil. Oleh karena itu, pemanggilan berulang dapat memengaruhi kinerja sistem dan meningkatkan biaya. Untuk mencegah pemanggilan berulang, Anda dapat menggunakan fungsi GET_JSON_OBJECT dengan UDTF. Untuk informasi lebih lanjut, lihat Konversi data log JSON menggunakan fungsi bawaan MaxCompute dan UDTF.

  • Parameter

    • json: wajib. Nilai bertipe STRING. Parameter ini menentukan objek JSON standar dalam format {Key:Value, Key:Value,...}. Jika string berisi tanda kutip ganda ("), gunakan dua backslash (\\) untuk meng-escape tanda kutip ganda (") sebelum ekstraksi. Jika string berisi tanda kutip tunggal ('), gunakan satu backslash (\) untuk meng-escape tanda kutip tunggal (') sebelum ekstraksi.

    • path: wajib. Nilai bertipe STRING. Parameter ini menentukan path dalam nilai parameter json dan dimulai dengan $. Untuk informasi lebih lanjut tentang parameter path, lihat LanguageManual UDF. Untuk praktik terbaik, lihat Migrasi data JSON dari OSS ke MaxCompute. Arti karakter berbeda:

      • $: menunjukkan node root.

      • . atau ['']: menunjukkan node anak. MaxCompute mengurai objek JSON menggunakan . atau ['']. Jika kunci dalam objek JSON berisi titik (.), [''] dapat digunakan.

      • [] ([number]): menunjukkan indeks array, yang dimulai dari 0.

      • *: menunjukkan wildcard untuk []. Jika karakter ini digunakan dalam parameter path, seluruh array dikembalikan. Tanda bintang (*) tidak dapat di-escape.

  • Batasan

    Hanya MaxCompute V2.0 yang memungkinkan Anda mengekstrak data menggunakan [''] dalam parameter path. Untuk menggunakan [''], Anda harus menambahkan pernyataan set odps.sql.udf.getjsonobj.new=true; sebelum pernyataan yang ingin Anda eksekusi.

  • Nilai kembali

    • Jika parameter json kosong atau tidak valid, null dikembalikan.

    • Jika format json valid dan path ada, string terkait dikembalikan.

    • Anda dapat menentukan parameter flagodps.sql.udf.getjsonobj.new untuk sesi guna menentukan cara fungsi ini mengembalikan nilai.

      • Jika Anda mengeksekusi pernyataan set odps.sql.udf.getjsonobj.new=true;, fungsi ini mempertahankan string asli saat mengembalikan nilai.

        Kami menyarankan Anda menggunakan konfigurasi ini karena menghasilkan perilaku pengembalian fungsi yang lebih standar. Hal ini memfasilitasi pemrosesan data dan meningkatkan kinerja pemrosesan data. Jika ada pekerjaan yang menggunakan fungsi ini untuk meng-escape karakter ter-reserve JSON dalam proyek MaxCompute, kami menyarankan Anda mempertahankan operasi escape asli untuk mencegah error akibat kurangnya verifikasi. Fungsi ini mengikuti aturan berikut saat mengembalikan nilai:

        • Dalam konfigurasi ini, nilai kembali tetap berupa string JSON, yang dapat diurai sebagai data JSON, tanpa perlu menggunakan fungsi REPLACE atau REGEXP_REPLACE untuk mengganti backslash (\).

        • Kunci duplikat diperbolehkan dalam objek JSON. Jika kunci duplikat ada, data dapat diurai.

          -- Nilai kembali adalah 1. 
          select get_json_object('{"a":"1","a":"2"}', '$.a');
        • String yang di-encode yang sesuai dengan emoji didukung. Namun, DataWorks tidak memungkinkan Anda memasukkan emoji. DataWorks hanya memungkinkan Anda memasukkan string yang di-encode yang sesuai dengan emoji ke MaxCompute menggunakan alat seperti Data Integration. DataWorks menggunakan fungsi GET_JSON_OBJECT untuk memproses data.

          -- Nilai kembali adalah emoji. 
          select get_json_object('{"a":"<Emoji>"}', '$.a');
        • Hasil output ditampilkan dalam urutan abjad.

          -- Nilai kembali adalah {"b":"1","a":"2"}. 
          select get_json_object('{"b":"1","a":"2"}', '$');
      • Jika Anda mengeksekusi pernyataan set odps.sql.udf.getjsonobj.new=false;, fungsi ini meng-escape karakter ter-reserve JSON saat mengembalikan nilai. Fungsi ini mengikuti aturan berikut saat mengembalikan nilai:

        • Karakter ter-reserve JSON seperti line feed (\n) dan tanda kutip (") ditampilkan sebagai '\n' dan '\"'.

        • Setiap kunci dalam objek JSON harus unik. Jika kunci duplikat ada, data mungkin gagal diurai. Pernyataan contoh:

          -- Nilai kembali adalah null. 
          select get_json_object('{"a":"1","a":"2"}', '$.a');
        • String yang di-encode yang sesuai dengan emoji tidak dapat diurai. Pernyataan contoh:

          -- Nilai kembali adalah null. 
          select get_json_object('{"a":"<Emoji>"}', '$.a');
        • Hasil output ditampilkan dalam urutan abjad. Pernyataan contoh:

          -- Nilai kembali adalah {"a":"2","b":"1"}. 
          select get_json_object('{"b":"1","a":"2"}', '$');

      Catatan

      Untuk proyek MaxCompute yang dibuat pada atau setelah 21 Januari 2021, fungsi GET_JSON_OBJECT mempertahankan string asli saat mengembalikan nilai. Untuk proyek MaxCompute yang dibuat sebelum 21 Januari 2021, fungsi GET_JSON_OBJECT meng-escape karakter ter-reserve JSON saat mengembalikan nilai. Contoh berikut membantu Anda menentukan cara fungsi GET_JSON_OBJECT mengembalikan nilai dalam proyek MaxCompute.

      select get_json_object('{"a":"[\\"1\\"]"}', '$.a');
      -- Mengembalikan karakter ter-reserve JSON menggunakan karakter escape.
      [\"1\"]
      
      -- Mengembalikan string asli.
      ["1"]

      Anda dapat mengajukan permohonan atau mencari ID grup DingTalk 11782920 untuk bergabung dengan grup komunitas developer MaxCompute di DingTalk dan meminta insinyur dukungan teknis MaxCompute mengonfigurasi fungsi GET_JSON_OBJECT agar mempertahankan string asli. Dengan cara ini, Anda tidak perlu sering menentukan set odps.sql.udf.getjsonobj.new=false; untuk sesi.

  • Contoh

    • Contoh 1: Ekstrak informasi dari objek JSON src_json.json. Pernyataan contoh:

      -- String JSON src_json.json berisi konten berikut: 
      +----+
      json
      +----+
      {"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"
      }
      -- Ekstrak informasi bidang owner dan kembalikan amy. 
      select get_json_object(src_json.json, '$.owner') from src_json;
      -- Ekstrak informasi array pertama dalam bidang store.fruit dan kembalikan {"weight":8,"type":"apple"}. 
      select get_json_object(src_json.json, '$.store.fruit[0]') from src_json;
      -- Ekstrak informasi bidang yang tidak ada dan kembalikan null. 
      select get_json_object(src_json.json, '$.non_exist_key') from src_json;
    • Contoh 2: Ekstrak informasi dari objek JSON bertipe ARRAY. Pernyataan contoh:

      -- Nilai kembali adalah 2222. 
      select get_json_object('{"array":[["aaaa",1111],["bbbb",2222],["cccc",3333]]}','$.array[1][1]');
      -- Nilai kembali adalah ["h0","h1","h2"]. 
      set odps.sql.udf.getjsonobj.new=true;
      select get_json_object('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[*]');
      -- Nilai kembali adalah ["h0","h1","h2"]. 
      set odps.sql.udf.getjsonobj.new=false;
      select get_json_object('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[*]');
      -- Nilai kembali adalah h1. 
      select get_json_object('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[1]');
    • Contoh 3: Ekstrak informasi dari objek JSON yang mencakup titik (.). Pernyataan contoh:

      -- Buat tabel. 
      create table mf_json (id string, json string);
      -- Masukkan data ke tabel. Kunci dalam data berisi titik (.). 
      insert into table mf_json (id, json) values ("1", "{
      \"China.beijing\":{\"school\":{\"id\":0,\"book\":[{\"title\": \"A\",
      \"price\": 8.95},{\"title\": \"B\",\"price\": 10.2}]}}}");
      -- Masukkan data ke tabel. Kunci dalam data tidak berisi titik (.). 
      insert into table mf_json (id, json) values ("2", "{
      \"China_beijing\":{\"school\":{\"id\":0,\"book\":[{\"title\": \"A\",
      \"price\": 8.95},{\"title\": \"B\",\"price\": 10.2}]}}}");
      -- Kueri nilai id dalam objek JSON yang kuncinya China.beijing. 0 dikembalikan. Hanya [''] yang dapat digunakan untuk menentukan kunci karena kunci berisi titik (.). Dengan cara ini, MaxCompute dapat mengurai kunci. 
      select get_json_object(json, "$['China.beijing'].school['id']") from mf_json where id =1;
      -- Kueri nilai id dalam objek JSON yang kuncinya China_beijing. 0 dikembalikan. Anda dapat menggunakan salah satu pernyataan berikut: 
      select get_json_object(json, "$['China_beijing'].school['id']") from mf_json where id =2;
      select get_json_object(json, "$.China_beijing.school['id']") from mf_json where id =2;
    • Contoh 4: Parameter json kosong atau tidak valid. Pernyataan contoh:

      -- Nilai kembali adalah null. 
      select get_json_object('','$.array[1][1]');
      -- Nilai kembali adalah null. 
      select get_json_object('"array":["aaaa",1111],"bbbb":["cccc",3333]','$.array[1][1]');
    • Contoh 5: Escape string JSON. Pernyataan contoh:

      set odps.sql.udf.getjsonobj.new=true;
      -- Nilai kembali adalah "1". 
      select get_json_object('{"a":"\\"1\\"","b":"2"}', '$.a'); 
      -- Nilai kembali adalah '1'. 
      select get_json_object('{"a":"\'1\'","b":"2"}', '$.a'); 

INITCAP

  • Sintaksis

    string initcap(<str>)
  • Deskripsi

    Mengonversi str ke bentuk title case di mana kata-kata dipisahkan spasi, dengan huruf pertama setiap kata kapital dan sisanya huruf kecil.

  • Parameter

    str: wajib. Tipe STRING. String input.

  • Nilai kembali

    Mengembalikan string dengan huruf pertama setiap kata kapital dan sisanya huruf kecil.

  • Contoh

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

INSTR

  • Sintaksis

    bigint instr(string <str1>, string <str2>[, bigint <start_position>[, bigint <nth_appearance>]])
  • Deskripsi

    Menemukan posisi substring str2 dalam string str1.

  • Parameter

    • str1: wajib. Tipe STRING. String target untuk pencarian. Jika input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, akan dikonversi secara implisit ke STRING. Tipe lain mengembalikan error.

    • str2: wajib. Tipe STRING. Substring yang dicocokkan. Jika input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, akan dikonversi secara implisit ke STRING. Tipe lain mengembalikan error.

    • start_position: opsional. Nilai bertipe BIGINT. Error dikembalikan untuk tipe data lain. Parameter ini menentukan posisi karakter dalam str1 tempat pencarian dimulai. Posisi awal default adalah karakter pertama, yaitu posisi 1. Jika start_position bernilai negatif, pencarian dimulai dari akhir string ke belakang, di mana karakter terakhir berada di posisi -1, kedua dari akhir di -2, dan seterusnya.

    • nth_appearance: Opsional. Nilai bertipe BIGINT yang harus lebih besar dari 0. Parameter ini menentukan posisi kemunculan ke-nth_appearance dari str2 dalam str1. Jika nth_appearance bertipe data lain atau kurang dari atau sama dengan 0, error dikembalikan.

  • Nilai kembali

    Mengembalikan tipe BIGINT. Nilai kembali mengikuti aturan berikut:

    • Jika str1 tidak mengandung str2, mengembalikan 0.

    • Jika str2 kosong, selalu cocok berhasil. Contoh: select instr('abc',''); mengembalikan 1.

    • Jika str1, str2, start_position, atau nth_appearance bernilai NULL, mengembalikan NULL.

  • Contoh

    • Contoh 1: Temukan posisi karakter e dalam string Tech on the net. Pernyataan contoh:

      -- Mengembalikan 2.
      select instr('Tech on the net', 'e');
    • Contoh 2: Temukan posisi substring on dalam string Tech on the net. Pernyataan contoh:

      -- Mengembalikan 6.
      select instr('Tech on the net', 'on');
    • Contoh 3: Temukan posisi kemunculan kedua karakter e dalam string Tech on the net mulai dari karakter ketiga. Pernyataan contoh:

      -- Mengembalikan 14.
      select instr('Tech on the net', 'e', 3, 2);
    • Contoh 4: Salah satu parameter input bernilai NULL. Pernyataan contoh:

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

IS_ENCODING

  • Sintaksis

    boolean is_encoding(string <str>, string <from_encoding>, string <to_encoding>)
  • Deskripsi

    Menentukan apakah string input str dapat dikonversi dari set karakter from_encoding ke to_encoding. Juga digunakan untuk mendeteksi teks rusak—biasanya atur from_encoding ke UTF-8 dan to_encoding ke GBK.

  • Parameter

    • str: wajib. Tipe STRING. String kosong dianggap valid untuk set karakter apa pun.

    • from_encoding, to_encoding: wajib. Tipe STRING. Set karakter sumber dan target.

  • Nilai kembali

    Mengembalikan tipe BOOLEAN. Nilai kembali mengikuti aturan berikut:

    • Jika str berhasil dikonversi, mengembalikan True; jika tidak, False.

    • Jika str, from_encoding, atau to_encoding bernilai NULL, mengembalikan NULL.

JSON_TUPLE

  • Sintaksis

    string json_tuple(string <json>, string <key1>, string <key2>,...)
  • Deskripsi

    Mengekstrak string dari string JSON standar berdasarkan serangkaian kunci input, seperti (key1,key2,...).

  • Parameter

    • json: wajib. Nilai bertipe STRING. Parameter ini menentukan string JSON standar.

    • key: wajib. Nilai bertipe STRING. Parameter ini digunakan untuk menggambarkan path objek JSON dalam string JSON. Nilainya tidak boleh dimulai dengan tanda dolar ($). Anda dapat memasukkan beberapa kunci sekaligus. MaxCompute mengurai objek JSON menggunakan . atau ['']. Jika kunci dalam objek JSON mencakup titik (.), [''] dapat digunakan.

  • Nilai kembali

    Nilai bertipe STRING dikembalikan.

    Catatan
    • Jika json kosong atau tidak valid, null dikembalikan.

    • Jika key kosong, tidak valid, atau tidak ada dalam string JSON, null dikembalikan.

    • Jika json valid dan key ada, string terkait dikembalikan.

    • Fungsi ini dapat mengurai data JSON yang berisi karakter Tionghoa.

    • Fungsi ini dapat mengurai data JSON bersarang.

    • Fungsi ini dapat mengurai data JSON yang berisi array bersarang.

    • Tindakan penguraian setara dengan eksekusi GET_JSON_OBJECT bersama dengan set odps.sql.udf.getjsonobj.new=true;. Untuk mendapatkan beberapa objek dari string JSON, Anda harus memanggil fungsi GET_JSON_OBJECT beberapa kali. Akibatnya, string JSON diurai beberapa kali. Fungsi JSON_TUPLE memungkinkan Anda memasukkan beberapa kunci sekaligus dan string JSON hanya diurai sekali. JSON_TUPLE lebih efisien daripada GET_JSON_OBJECT.

    • JSON_TUPLE adalah fungsi user-defined table-valued function (UDTF). Jika Anda ingin memilih beberapa kolom dari tabel, gunakan JSON_TUPLE bersama dengan klausa LATERAL VIEW.

KEYVALUE

  • Sintaksis

    keyvalue(string <str>,[string <split1>,string <split2>,] string <key>)
    keyvalue(string <str>,string <key>) 
  • Deskripsi

    Memisahkan string str menjadi pasangan kunci-nilai menggunakan split1, memisahkan pasangan menggunakan split2, dan mengembalikan nilai yang sesuai dengan key.

  • Parameter

    • str: wajib. Tipe STRING. String yang akan dipisahkan.

    • split1, split2: opsional. Tipe STRING. String delimiter untuk pemisahan. Jika tidak ditentukan, nilai default split1 adalah ";" dan split2 adalah ":". Jika substring yang dipisahkan oleh split1 berisi beberapa split2, hasilnya tidak terdefinisi.

    • key: wajib. Tipe STRING. Setelah dipisahkan oleh split1 dan split2, mengembalikan nilai untuk key.

  • Nilai kembali

    Mengembalikan tipe STRING. Nilai kembali mengikuti aturan berikut:

    • Jika split1 atau split2 bernilai NULL, mengembalikan NULL.

    • Jika str atau key bernilai NULL atau tidak ada key yang cocok, mengembalikan NULL.

    • Jika beberapa pasangan kunci-nilai cocok, mengembalikan nilai untuk key yang cocok pertama.

  • Contoh

    • Contoh 1: Pisahkan string 0:1/;1:2 menjadi pasangan kunci-nilai dan kembalikan nilai untuk kunci 1. Pernyataan contoh:

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

      Parameter split1 dan split2 tidak ditentukan. Nilai default split1 adalah titik koma (";") dan nilai default split2 adalah titik dua (":").

      Setelah dipisahkan oleh split1, pasangan kunci-nilai adalah 0:1/,1:2. Setelah dipisahkan oleh split2:

      0 1/  
      1 2

      Mengembalikan nilai 2 untuk kunci 1.

    • Contoh 2: Pisahkan string “\;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\;” menggunakan “\;” sebagai split1 dan ":" sebagai split2, lalu kembalikan nilai untuk kunci tf. Pernyataan contoh:

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

      Memisahkan string "\;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\;" menggunakan delimiter "\;" menghasilkan pasangan kunci-nilai berikut.

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

      Hasil pemisahan oleh ":" adalah sebagai berikut.

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

      Mengembalikan nilai 21910 untuk kunci tf.

KEYVALUE_TUPLE

  • Sintaksis

    KEYVALUE_TUPLE(str, split1, split2, key1, key2, ..., keyN)
  • Deskripsi

    Memisahkan string str menjadi pasangan kunci-nilai menggunakan split1, memisahkan pasangan menggunakan split2, dan mengembalikan nilai untuk beberapa key.

  • Parameter

    • str: wajib. Tipe STRING. String yang akan dipisahkan.

    • split1, split2: wajib. Tipe STRING. String delimiter untuk pemisahan. Jika substring yang dipisahkan oleh split1 berisi beberapa split2, hasilnya tidak terdefinisi.

    • key: wajib. Tipe STRING. Setelah dipisahkan oleh split1 dan split2, mengembalikan nilai untuk key.

  • Nilai kembali

    Mengembalikan tipe STRING. Nilai kembali mengikuti aturan berikut:

    • Jika split1 atau split2 bernilai NULL, mengembalikan NULL.

    • Jika str atau key bernilai NULL atau tidak ada key yang cocok, mengembalikan NULL.

  • Contoh

    -- Buat tabel
    create table mf_user (
    user_id string,
    user_info string
    );
    -- Masukkan data
    insert into mf_user values('1','age:18;genda:f;address:abc'),('2','age:20;genda:m;address:bcd');
    -- Kueri
    SELECT user_id,
    KEYVALUE(user_info,';',':','age') as age,
    KEYVALUE(user_info,';',':','genda') as genda,
    KEYVALUE(user_info,';',':','address') as address
    FROM mf_user;
    -- Setara dengan kueri KEYVALUE
    SELECT user_id,
    age,
    genda,
    address
    FROM mf_user LATERAL VIEW KEYVALUE_TUPLE(user_info,';', ':','age','genda','address') ui AS age,genda,address;

    Hasilnya sebagai berikut.

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

LENGTH

  • Sintaksis

    bigint length(string <str>)
  • Deskripsi

    Menghitung panjang string str.

  • Parameter

    str: wajib. Tipe STRING. Jika input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, akan dikonversi secara implisit ke STRING.

  • Nilai kembali

    Mengembalikan tipe BIGINT. Nilai kembali mengikuti aturan berikut:

    • Jika str bukan bertipe STRING, BIGINT, DOUBLE, DECIMAL, atau DATETIME, mengembalikan error.

    • Jika str bernilai NULL, mengembalikan NULL.

    • Jika str tidak di-encode UTF-8, mengembalikan -1.

  • Contoh

    • Contoh 1: Hitung panjang string Tech on the net. Pernyataan contoh:

      -- Mengembalikan 15.
      select length('Tech on the net');
    • Contoh 2: Parameter input bernilai NULL. Pernyataan contoh:

      -- Mengembalikan NULL.
      select length(null);

LENGTHB

  • Sintaksis

    bigint lengthb(string <str>)
  • Deskripsi

    Menghitung panjang byte dari string str.

  • Parameter

    str: wajib. Tipe STRING. Jika input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, akan dikonversi secara implisit ke STRING.

  • Nilai kembali

    Mengembalikan tipe BIGINT. Nilai kembali mengikuti aturan berikut:

    • Jika str bukan bertipe STRING, BIGINT, DOUBLE, DECIMAL, atau DATETIME, mengembalikan error.

    • Jika str bernilai NULL, mengembalikan NULL.

  • Contoh

    • Contoh 1: Hitung panjang byte dari string Tech on the net. Pernyataan contoh:

      -- Mengembalikan 15.
      select lengthb('Tech on the net');
    • Contoh 2: Parameter input bernilai NULL. Pernyataan contoh:

      -- Mengembalikan NULL.
      select lengthb(null);

LOCATE

  • Sintaksis

    bigint locate(string <substr>, string <str>[, bigint <start_pos>]) 
  • Deskripsi

    Menemukan posisi substring substr dalam str. Gunakan start_pos untuk menentukan posisi awal (dihitung dari 1).

  • Parameter

    • substr: wajib. Tipe STRING. Substring yang dicari.

    • str: wajib. Tipe STRING. String yang dicari.

    • start_pos: opsional. Tipe BIGINT. Posisi awal untuk pencarian.

  • Nilai kembali

    Mengembalikan tipe BIGINT. Nilai kembali mengikuti aturan berikut:

    • Jika str tidak mengandung substr, mengembalikan 0.

    • Jika str atau substr bernilai NULL, mengembalikan NULL.

    • Jika start_pos bernilai NULL, mengembalikan 0.

  • Contoh

    • Contoh 1: Temukan posisi string ab dalam string abchelloabc. Pernyataan contoh:

      -- Mengembalikan 1.
      select locate('ab', 'abchelloabc');
    • Contoh 2: Temukan posisi string hi dalam string abchelloabc. Pernyataan contoh:

      -- Mengembalikan 0.
      select locate('hi', 'abc,hello,ab,c');
    • Contoh 3: start_pos bernilai NULL. Pernyataan contoh:

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

LPAD

  • Sintaksis

    string lpad(string <str1>, int <length>, string <str2>)
  • Deskripsi

    Menambahkan padding di sebelah kiri string str1 hingga mencapai length karakter menggunakan string str2. Fungsi ini merupakan ekstensi di MaxCompute V2.0.

  • Parameter

    • str1: wajib. Tipe STRING. String yang akan diberi padding kiri.

    • length: wajib. Tipe INT. Jumlah karakter untuk padding kiri.

    • str2: wajib. String padding.

  • Nilai kembali

    Mengembalikan tipe STRING. Nilai kembali mengikuti aturan berikut:

    • Jika length kurang dari panjang str1, mengembalikan karakter paling kiri sebanyak length dari str1.

    • Jika length adalah 0, mengembalikan string kosong.

    • Jika tidak ada parameter input atau ada parameter input yang bernilai NULL, mengembalikan NULL.

  • Contoh

    • Contoh 1: Gunakan string 12 untuk menambahkan padding kiri pada string abcdefgh hingga mencapai 10 karakter. Perintah contohnya sebagai berikut.

      -- Mengembalikan 12abcdefgh.
      select lpad('abcdefgh', 10, '12');
    • Contoh 2: Gunakan string 12 untuk menambahkan padding kiri pada string abcdefgh hingga mencapai panjang 5 karakter. Berikut adalah perintah contohnya.

      -- Mengembalikan abcde.
      select lpad('abcdefgh', 5, '12');
    • Contoh 3: length adalah 0. Pernyataan contoh:

      -- Mengembalikan string kosong.
      select lpad('abcdefgh' ,0, '12'); 
    • Contoh 4: Salah satu parameter input bernilai NULL. Pernyataan contoh:

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

LTRIM

  • Sintaksis

    string ltrim(string <str>[, <trimChars>])
    string trim(leading [<trimChars>] from <str>)
  • Deskripsi

    Menghapus karakter dari ujung kiri str:

    • Jika trimChars tidak ditentukan, secara default menghapus spasi awal.

    • Jika Anda menentukan trimChars, fungsi ini memperlakukan karakter dalam trimChars sebagai himpunan dan menghapus substring terpanjang yang mungkin dari ujung kiri str yang seluruhnya terdiri atas karakter dalam himpunan trimChars.

  • Parameter

    • str: wajib. Tipe STRING. String yang akan dipangkas. Jika input bertipe BIGINT, DECIMAL, DOUBLE, atau DATETIME, akan dikonversi secara implisit ke STRING.

    • trimChars: opsional. Tipe STRING. Karakter yang akan dihapus.

  • Nilai kembali

    Mengembalikan tipe STRING. Nilai kembali mengikuti aturan berikut:

    • Jika str bukan bertipe STRING, BIGINT, DOUBLE, DECIMAL, atau DATETIME, mengembalikan error.

    • Jika str atau trimChars bernilai NULL, mengembalikan NULL.

  • Contoh

    • Contoh 1: Hapus spasi awal dari string yxTxyomxx . Pernyataan contoh:

      -- Mengembalikan yxTxyomxx.
      select ltrim(' yxTxyomxx ');
      -- Setara dengan:
      select trim(leading from ' yxTxyomxx ');
    • Contoh 2: Hapus semua karakter awal dari string yxTxyomxx yang berada dalam himpunan xy.

      -- Mengembalikan Txyomxx. Semua x atau y awal dihapus.
      select ltrim('yxTxyomxx', 'xy');
      -- Setara dengan:
      select trim(leading 'xy' from 'yxTxyomxx');
    • Contoh 3: Parameter input bernilai NULL. Pernyataan contoh:

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

MASK_HASH

  • Sintaksis

    mask_hash(<expr>)
  • Deskripsi

    Mengembalikan nilai hash yang dihitung dari ekspresi string expr. Nilai hash yang identik menunjukkan nilai ekspresi yang identik.

  • Parameter

    expr: wajib. Ekspresi string untuk perhitungan hash. Mendukung tipe STRING, CHAR, VARCHAR, BINARY.

  • Nilai kembali

    Mengembalikan nilai hash sepanjang 64 byte. Untuk ekspresi non-string, mengembalikan null (kompatibel Hive).

  • Contoh

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

MD5

  • Sintaksis

    string md5(string <str>)
  • Deskripsi

    Menghitung hash MD5 dari string str.

  • Parameter

    str: wajib. Tipe STRING. Jika input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, akan dikonversi secara implisit ke STRING.

  • Nilai kembali

    Mengembalikan tipe STRING. Nilai kembali mengikuti aturan berikut:

    • Jika str bukan bertipe STRING, BIGINT, DOUBLE, DECIMAL, atau DATETIME, mengembalikan error.

    • Jika str bernilai NULL, mengembalikan NULL.

  • Contoh

    • Contoh 1: Hitung hash MD5 dari string Tech on the net. Pernyataan contoh:

      -- Mengembalikan ddc4c4796880633333d77a60fcda9af6.
      select md5('Tech on the net');
    • Contoh 2: Parameter input bernilai NULL. Pernyataan contoh:

      -- Mengembalikan NULL.
      select md5(null);

PARSE_URL

  • Sintaksis

    string parse_url(string <url>, string <part>[, string <key>])
  • Deskripsi

    Mengurai url dan mengekstrak informasi yang ditentukan oleh part.

  • Parameter

    • url: wajib. Tipe STRING. Tautan URL. URL yang tidak valid mengembalikan error.

    • part: wajib. Tipe STRING. Nilai valid: HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO (tidak case-sensitive).

    • key: opsional. Ketika part adalah QUERY, mengembalikan nilai untuk key.

  • Deskripsi pengembalian

    Mengembalikan tipe STRING. Nilai kembali mengikuti aturan berikut:

    • Jika url, part, atau key bernilai NULL, mengembalikan NULL.

    • Jika part tidak valid, mengembalikan error.

  • Contoh

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

PARSE_URL_TUPLE

  • Sintaksis

    string parse_url_tuple(string <url>, string <key1>, string <key2>,...)
  • Deskripsi

    Mengurai url dan mengekstrak string yang ditentukan oleh kunci input key1, key2, dll. Mirip dengan PARSE_URL tetapi mengekstrak beberapa kunci sekaligus dengan kinerja lebih baik.

  • Parameter

    • url: wajib. Tipe STRING. Tautan URL. URL yang tidak valid mengembalikan error.

    • key1, key2: wajib. Tipe STRING. Kunci yang akan diekstrak. Nilai valid:

      • HOST: Alamat host (domain atau IP).

      • PATH: Jalur ke sumber daya jaringan di server.

      • QUERY: String kueri (konten untuk kueri).

      • REF: menunjukkan pengidentifikasi fragmen URL, yaitu konten setelah simbol #.

      • PROTOCOL: Jenis protokol.

      • AUTHORITY: Domain/IP server, port, dan info autentikasi pengguna (username, password).

      • FILE: Jalur dan konten kueri (PATH + QUERY).

      • USERINFO: Info autentikasi pengguna.

      • QUERY:<KEY>: Nilai untuk kunci tertentu dalam string kueri.

      Tidak case-sensitive. Nilai tidak valid mengembalikan error.

  • Deskripsi Pengembalian

    Mengembalikan tipe STRING. Jika url atau key bernilai NULL, mengembalikan error.

  • Contoh

    Ekstrak string untuk setiap kunci dari file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose. Pernyataan contoh:

    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);

    Mengembalikan:

    +------------+------------+------------+------------+------------+------------+------------+------------+------------+------------+
    | 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

  • Sintaksis

    bigint regexp_count(string <source>, string <pattern>[, bigint <start_position>])
  • Deskripsi

    Menghitung substring dalam source mulai dari start_position yang cocok dengan pattern yang ditentukan.

  • Parameter

    • source: wajib. Tipe STRING. String yang dicari. Tipe lain mengembalikan error.

    • pattern: wajib. Konstanta STRING atau ekspresi reguler. Pola yang dicocokkan. Untuk panduan regex lebih lanjut, lihat Pencocokan string RLIKE. pattern kosong atau tidak valid mengembalikan error.

    • start_position: opsional. Konstanta bertipe BIGINT. Nilai parameter ini harus lebih besar dari 0. Jika nilainya bertipe data lain atau kurang dari atau sama dengan 0, error dikembalikan. Jika Anda tidak menentukan parameter ini, nilai default adalah 1. Nilai ini menunjukkan bahwa pencarian dimulai dari karakter pertama string source.

  • Nilai kembali

    Mengembalikan tipe BIGINT. Nilai kembali mengikuti aturan berikut:

    • Jika tidak ditemukan kecocokan, mengembalikan 0.

    • Jika source, pattern, atau start_position bernilai NULL, mengembalikan NULL.

  • Contoh

    • Contoh 1: Hitung substring yang cocok dalam abababc dari posisi yang ditentukan. Pernyataan contoh:

      -- Mengembalikan 1.
      select regexp_count('abababc', 'a.c');
      -- Mengembalikan 2.
      select regexp_count('abababc', '[[:alpha:]]{2}', 3);
    • Contoh 2: Salah satu parameter input bernilai NULL. Pernyataan contoh:

      -- Mengembalikan NULL.
      select regexp_count('abababc', null);
    • Contoh 3: Hitung kemunculan : dalam string JSON {"account_id":123456789,"account_name":"allen","location":"hangzhou","bill":100}. Pernyataan contoh:

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

REGEXP_EXTRACT

  • Sintaksis

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

    Dalam versi tipe data yang kompatibel Hive, REGEXP_EXTRACT mengikuti spesifikasi regex Java. Dalam versi tipe data 1.0 dan 2.0, mengikuti spesifikasi MaxCompute.

  • Deskripsi

    Memisahkan string source menjadi grup menggunakan pattern dan mengembalikan string dari grup groupid.

  • Parameter

    • source: wajib. Tipe STRING. String yang akan dipisahkan.

    • pattern: wajib. Konstanta STRING atau ekspresi reguler. Pola yang dicocokkan. Untuk panduan regex lebih lanjut, lihat Pencocokan string RLIKE.

    • groupid: opsional. Konstanta BIGINT, harus ≥0.

    Catatan

    Data disimpan dalam format UTF-8. Karakter Tionghoa dapat direpresentasikan dalam heksadesimal dalam rentang [\\x{4e00},\\x{9fa5}].

  • Nilai kembali

    Mengembalikan tipe STRING. Nilai kembali mengikuti aturan berikut:

    • Jika pattern adalah string kosong atau tidak ada grup yang ditentukan dalam pattern, error dikembalikan.

    • groupid bukan bertipe BIGINT atau kurang dari 0, error dikembalikan. Jika Anda tidak menentukan parameter ini, nilai default adalah 1, yang menunjukkan bahwa substring dalam grup pertama dikembalikan. Jika groupid diatur ke 0, substring yang cocok dengan seluruh pattern dikembalikan.

    • Jika source, pattern, atau groupid bernilai NULL, mengembalikan NULL.

REGEXP_EXTRACT_ALL

  • Sintaksis

    array<T> regexp_extract_all(string <source>, string <pattern>[,bigint <group_id>])
  • Deskripsi

    Menemukan semua substring yang cocok dengan pola ekspresi reguler dalam string dan mengembalikannya sebagai array.

  • Parameter

    • source: wajib. Tipe STRING. String yang akan dianalisis.

    • pattern: wajib. Tipe STRING. Pola yang dicocokkan. Ini bisa berupa konstanta STRING atau ekspresi reguler. Untuk panduan regex lebih lanjut, lihat Pencocokan string RLIKE.

    • group_id: opsional. Nilai BIGINT. Parameter ini menentukan ID grup yang digunakan untuk mencocokkan pola. Nilai parameter ini harus lebih besar dari atau sama dengan 0. Jika Anda tidak menentukan parameter ini, grup dengan group_id 1 digunakan untuk mencocokkan pola. Jika Anda mengatur parameter ini ke 0, pattern dicocokkan secara keseluruhan.

  • Nilai kembali

    Nilai ARRAY dikembalikan. Jika Anda menentukan group_id, array yang berisi semua hasil pencocokan untuk group_id yang ditentukan dikembalikan. Jika Anda tidak menentukan group_id, array yang berisi semua hasil pencocokan untuk group_id 1 dikembalikan.

  • Contoh

    • Jika Anda tidak menentukan group_id, perilaku default adalah mengembalikan hasil yang cocok dengan grup pertama group_id.

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

      Mengembalikan:

      +------------+
      | _c0        |
      +------------+
      | [100,300] |
      +------------+
    • Jika Anda mengatur nilai group_id ke 2, hasil pencocokan untuk grup kedua group_id dikembalikan.

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

      Berikut adalah hasilnya.

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

REGEXP_INSTR

  • Sintaksis

    bigint regexp_instr(string <source>, string <pattern>[,bigint <start_position>[, bigint <occurrence>[, bigint <return_option>]]])
  • Deskripsi

    Mengembalikan posisi awal atau akhir kemunculan ke-occurrence dari substring yang cocok dengan pattern dalam source, mulai dari start_position.

  • Parameter

    • source: Wajib. String sumber. Tipe data harus STRING.

    • pattern: Wajib. Pola yang dicocokkan. Nilainya bisa berupa konstanta STRING atau ekspresi reguler. Untuk informasi lebih lanjut tentang ekspresi reguler, lihat Pencocokan string RLIKE. pattern kosong mengembalikan error.

    • start_position: Opsional. Posisi tempat pencarian dimulai. Nilainya harus konstanta BIGINT. Nilai default adalah 1.

    • occurrence: Opsional. Kemunculan kecocokan yang dicari. Nilainya harus konstanta BIGINT. Nilai default adalah 1, yang menunjukkan kecocokan pertama.

    • return_option: Opsional. Posisi yang dikembalikan. Nilainya harus konstanta BIGINT. Nilai valid: 0 menentukan posisi awal dan 1 menentukan posisi akhir. Nilai default adalah 0. Jika Anda menentukan nilai yang tidak valid, error dikembalikan.

  • Nilai kembali

    Nilai kembali bertipe BIGINT. Parameter return_option menentukan apakah akan mengembalikan posisi awal atau akhir substring yang cocok dalam source. Nilai kembali ditentukan oleh aturan berikut:

    • Jika pattern kosong, error dikembalikan.

    • Jika nilai start_position atau occurrence bukan konstanta BIGINT atau kurang dari atau sama dengan 0, error dikembalikan.

    • Jika nilai source, pattern, start_position, occurrence, atau return_option bernilai NULL, NULL dikembalikan.

  • Contoh

    • Contoh 1: Mengembalikan posisi awal kemunculan ke-2 dari substring yang cocok dengan o[[:alpha:]]{1} dalam string i love www.taobao.com, mulai dari posisi 3. Pernyataan contoh:

      -- Mengembalikan 14.
      select regexp_instr('i love www.taobao.com', 'o[[:alpha:]]{1}', 3, 2);
    • Contoh 2: Mengembalikan posisi akhir kemunculan ke-kedua dari substring yang cocok dengan o[[:alpha:]]{1} dalam string i love www.taobao.com. Pencarian dimulai dari karakter ke-tiga. Pernyataan contoh:

      -- Mengembalikan 16.
      select regexp_instr('i love www.taobao.com', 'o[[:alpha:]]{1}', 3, 2, 1);
    • Contoh 3: Parameter input bernilai NULL. Pernyataan contoh:

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

REGEXP_REPLACE

  • Sintaksis

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

    Untuk tipe data yang kompatibel Hive, fungsi REGEXP_REPLACE mengikuti spesifikasi ekspresi reguler Java. Untuk tipe data 1.0 dan 2.0, mengikuti spesifikasi MaxCompute.

  • Deskripsi

    Mengganti substring yang cocok dengan pattern pada posisi yang ditentukan oleh occurrence dalam string source dengan replace_string dan mengembalikan hasilnya.

  • Parameter

    • source: Wajib. Nilai bertipe STRING. Ini adalah string sumber yang akan dimodifikasi.

    • pattern: Wajib. Konstanta STRING atau ekspresi reguler. Ini adalah pola yang dicocokkan. Untuk informasi lebih lanjut tentang aturan ekspresi reguler, lihat Pencocokan string RLIKE. Jika pattern kosong, error dikembalikan.

    • replace_string: Wajib. Nilai bertipe STRING. Ini adalah string yang menggantikan substring yang cocok dengan pattern.

      Catatan
      • Jika replace_string adalah string kosong, fungsi menghapus substring yang cocok dengan pattern.

      • replace_string dapat berisi referensi balik dalam format \n untuk memasukkan substring yang cocok dengan grup penangkapan ke-n dalam pattern. Nilai n dapat berupa bilangan bulat dari 1 hingga 9. \0 memasukkan seluruh substring yang cocok dengan pattern. Anda harus melakukan escape backslash, seperti \\1, atau menggunakan string mentah, seperti R'(\1)'.

    • occurrence: Opsional. Konstanta bertipe BIGINT, yang harus lebih besar dari atau sama dengan 0. Nilai parameter ini menunjukkan bahwa string yang cocok dengan pola tertentu pada kemunculan ke-n yang ditentukan oleh occurrence diganti dengan replace_string. Jika parameter ini diatur ke 0, semua substring yang cocok dengan pola tertentu diganti. Jika bertipe data lain atau kurang dari 0, error dikembalikan. Nilai default: 0.

  • Nilai kembali

    Nilai bertipe STRING dikembalikan. Nilai kembali ditentukan oleh aturan berikut:

    • Jika Anda mereferensikan grup yang tidak ada, hasilnya tidak terdefinisi.

    • Jika replace_string bernilai NULL dan ditemukan kecocokan untuk pattern, NULL dikembalikan.

    • Jika replace_string bernilai NULL dan pattern tidak cocok, fungsi mengembalikan string asli.

    • Jika source, pattern, atau occurrence bernilai NULL, NULL dikembalikan.

  • Contoh

    • Contoh 1: Ganti substring berdasarkan aturan yang ditentukan.

      -- Mengembalikan Abcd.
      select regexp_replace("abcd", "a", "A", 0);
      -- Mengembalikan bcd.
      select regexp_replace("abcd", "a", "", 0);
      -- Mengembalikan 19700101.
      select regexp_replace("1970-01-01", "-", "", 0);
      -- Mengembalikan abc.
      select regexp_replace("a1b2c3", "[0-9]", "", 0);
      -- Mengembalikan a1b2c.
      select regexp_replace("a1b2c3", "[0-9]", "", 3);
    • Contoh 2: Ganti semua kecocokan untuk pola ([[:digit:]]{3})\\.([[:digit:]]{3})\\.([[:digit:]]{4}) dalam string 123.456.7890 dengan (\\1)\\2-\\3. Pernyataan contoh:

      -- Mengembalikan (123)456-7890.
      select regexp_replace('123.456.7890', '([[:digit:]]{3})\\.([[:digit:]]{3})\\.([[:digit:]]{4})',
      '(\\1)\\2-\\3', 0);
    • Contoh 3: Ganti substring yang cocok dengan pola dalam string abcd berdasarkan aturan yang ditentukan. Pernyataan contoh:

      -- Mengembalikan a b c d.
      select regexp_replace('abcd', '(.)', '\\1 ', 0);
      -- Mengembalikan a bcd.
      select regexp_replace('abcd', '(.)', '\\1 ', 1);
      -- Mengembalikan d.
      select regexp_replace("abcd", "(.*)(.)$", "\\2", 0);
    • Contoh 4: Tabel url_set berisi kolom URL dengan nilai dalam format www.simple@xxx.com. Bagian xxx unik untuk setiap baris. Contoh ini mengganti semua karakter setelah www. Pernyataan contoh:

      -- Mengembalikan wwwtest.
      select regexp_replace(url,'(www)(.*)','wwwtest',0) from url_set;
    • Contoh 5: Parameter input bernilai NULL. Pernyataan contoh:

      -- Mengembalikan NULL.
      select regexp_replace('abcd', '(.)', null, 0);
    • Contoh 6: Referensi grup yang tidak ada. Pernyataan contoh:

      -- Pola hanya mendefinisikan satu grup; referensi grup kedua tidak ada.
      -- Hindari penggunaan ini; hasilnya tidak terdefinisi.
      regexp_replace("abcd", "(.)", "\\2", 0) = "" or "abcd"
      -- Pola tidak memiliki grup; \1 mereferensikan grup yang tidak ada.
      -- Hindari penggunaan ini; hasilnya tidak terdefinisi.
      regexp_replace("abcd", "a", "\\1", 0) = "bcd" or "abcd"

REGEXP_SUBSTR

  • Sintaksis

    string regexp_substr(string <source>, string <pattern>[, bigint <start_position>[, bigint <occurrence>]])
  • Deskripsi

    Mengembalikan substring dari posisi start_position dalam string source yang cocok dengan pattern untuk kemunculan ke-occurrence.

  • Parameter

    • source: Wajib. Tipe STRING. String yang dicari.

    • pattern: Wajib. Konstanta STRING atau ekspresi reguler. Pola yang dicocokkan. Sintaksis ekspresi reguler dijelaskan dalam Pencocokan string RLIKE.

    • start_position: Opsional. Konstanta BIGINT. Nilainya harus lebih besar dari 0. Jika Anda tidak menentukan parameter ini, nilai default adalah 1, yang menunjukkan bahwa pencarian dimulai dari karakter pertama string source.

    • occurrence: Opsional. Konstanta BIGINT. Nilainya harus lebih besar dari 0. Nilai default adalah 1, yang menunjukkan kecocokan pertama.

  • Nilai kembali

    Mengembalikan STRING. Nilai kembali mengikuti aturan berikut:

    • Jika pattern kosong, terjadi error.

    • Jika tidak ditemukan kecocokan, mengembalikan NULL.

    • Jika start_position atau occurrence bukan BIGINT atau kurang dari atau sama dengan 0, terjadi error.

    • Jika source, pattern, start_position, atau occurrence bernilai NULL, mengembalikan NULL.

  • Contoh

    • Contoh 1: Mengembalikan substring yang cocok dengan pola yang ditentukan dalam I love aliyun very much. Pernyataan contoh:

      -- Mengembalikan aliyun.
      select regexp_substr('I love aliyun very much', 'a[[:alpha:]]{5}');
      -- Mengembalikan have.
      select regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 1);
      -- Mengembalikan 2.
      select regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 2);
    • Contoh 2: Salah satu parameter input bernilai NULL. Pernyataan contoh:

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

REPEAT

  • Sintaksis

    string repeat(string <str>, bigint <n>)
  • Deskripsi

    Mengembalikan string str yang diulang sebanyak n kali.

  • Parameter

    • str: wajib. Tipe STRING. Jika input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, akan dikonversi secara implisit ke STRING.

    • n: wajib. Tipe BIGINT. Ukuran nilai tidak boleh melebihi 2 MB.

  • Nilai kembali

    Mengembalikan nilai bertipe STRING. Nilai kembali mengikuti aturan berikut:

    • Jika str bukan bertipe STRING, BIGINT, DOUBLE, DECIMAL, atau DATETIME, error dikembalikan.

    • Jika n kosong, error dikembalikan.

    • Jika str atau n bernilai NULL, NULL dikembalikan.

  • Contoh

    • Contoh 1: Ulangi string abc sebanyak 5 kali. Pernyataan contoh:

      -- Mengembalikan abcabcabcabcabc.
      select repeat('abc', 5); 
    • Contoh 2: Salah satu parameter input bernilai NULL. Pernyataan contoh:

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

REPLACE

  • Sintaksis

    string replace(string <str>, string <old>, string <new>)
  • Deskripsi

    Mengganti semua kemunculan old dengan new dalam str dan mengembalikan str yang telah dimodifikasi. Jika tidak ditemukan kecocokan, str asli dikembalikan. Fungsi ini merupakan fungsi ekstensi MaxCompute V2.0.

  • Parameter

    • str: wajib. Tipe STRING. String sumber.

    • old: Wajib. String yang akan dibandingkan.

    • new: wajib. Tipe STRING. String pengganti.

  • Nilai kembali

    Mengembalikan nilai bertipe STRING. Jika ada parameter input yang bernilai NULL, NULL dikembalikan.

  • Contoh

    • Contoh 1: Ganti semua kemunculan substring abab dengan 12 dalam string ababab. Pernyataan contoh:

      -- Mengembalikan 12ab.
      select replace('ababab','abab','12');
    • Contoh 2: Salah satu parameter input bernilai NULL. Pernyataan contoh:

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

REVERSE

  • Sintaksis

    string reverse(string <str>)
  • Deskripsi

    Mengembalikan kebalikan dari string str.

  • Parameter

    str: Wajib. Parameter bertipe STRING. Jika input berupa nilai BIGINT, DOUBLE, DECIMAL, atau DATETIME, akan dikonversi secara implisit ke tipe STRING.

  • Nilai kembali

    Mengembalikan nilai bertipe STRING. Aturan berikut berlaku:

    • Jika tipe data str bukan STRING, BIGINT, DOUBLE, DECIMAL, atau DATETIME, error dikembalikan.

    • Jika str bernilai NULL, NULL dikembalikan.

  • Contoh

    • Contoh 1: Balikkan string I love aliyun very much. Pernyataan contoh:

      -- Mengembalikan hcum yrev nuyila evol I.
      select reverse('I love aliyun very much');
    • Contoh 2: Parameter input bernilai NULL. Pernyataan contoh:

      -- Mengembalikan NULL.
      select reverse(null);

RPAD

  • Sintaksis

    string rpad(string <str1>, int <length>, string <str2>)
  • Deskripsi

    Menambahkan padding di sebelah kanan string str1 hingga mencapai length karakter menggunakan string padding str2. Fungsi ini merupakan ekstensi di MaxCompute V2.0.

  • Parameter

    • str1: wajib. Tipe STRING. String yang akan diberi padding kanan.

    • length: wajib. Tipe INT. Harus lebih besar dari atau sama dengan 0. Menentukan jumlah karakter dalam hasil yang diberi padding.

    • str2 (wajib): String yang digunakan untuk padding.

  • Nilai kembali

    Mengembalikan tipe STRING. Nilai kembali mengikuti aturan berikut:

    • Jika length kurang dari panjang str1, mengembalikan karakter paling kiri sebanyak length dari str1.

    • Jika length adalah 0, mengembalikan string kosong.

    • Jika tidak ada parameter input atau ada parameter input yang bernilai NULL, mengembalikan NULL.

  • Contoh

    • Contoh 1: Tambahkan padding kanan pada string abcdefgh hingga mencapai 10 karakter menggunakan string padding 12. Pernyataan contoh:

      -- Mengembalikan abcdefgh12.
      select rpad('abcdefgh', 10, '12');
    • Contoh 2: Tambahkan padding kanan pada string abcdefgh hingga mencapai 5 karakter menggunakan string padding 12. Pernyataan contoh:

      -- Mengembalikan abcde.
      select rpad('abcdefgh', 5, '12');
    • Contoh 3: length adalah 0. Pernyataan contoh:

      -- Mengembalikan string kosong.
      select rpad('abcdefgh' ,0, '12'); 
    • Contoh 4: Salah satu parameter input bernilai NULL. Pernyataan contoh:

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

RTRIM

  • Sintaksis

    string rtrim(string <str>[, <trimChars>])
    string trim(trailing [<trimChars>] from <str>)
  • Deskripsi

    Menghapus karakter dari ujung kanan str:

    • Jika trimChars tidak ditentukan, spasi dipangkas secara default.

    • Jika trimChars ditentukan, karakter dalam trimChars diperlakukan sebagai kumpulan. Substring terpanjang dari ujung kanan str yang seluruhnya terdiri atas karakter dari kumpulan trimChars dihapus.

  • Parameter

    • str: wajib. Tipe STRING. String yang akan dipangkas. Jika input bertipe BIGINT, DECIMAL, DOUBLE, atau DATETIME, akan dikonversi secara implisit ke STRING.

    • trimChars: opsional. Tipe STRING. Karakter yang akan dihapus.

  • Nilai kembali

    Mengembalikan tipe STRING. Nilai kembali mengikuti aturan berikut:

    • Jika str bukan bertipe STRING, BIGINT, DOUBLE, DECIMAL, atau DATETIME, mengembalikan error.

    • Jika str atau trimChars bernilai NULL, mengembalikan NULL.

  • Contoh

    • Contoh 1: Hapus spasi akhir dari string yxTxyomxx . Pernyataan contoh:

      -- Mengembalikan  yxTxyomxx.
      select rtrim(' yxTxyomxx ');
      -- Setara dengan:
      select trim(trailing from ' yxTxyomxx ');
    • Contoh 2: Hapus semua karakter akhir dari string yxTxyomxx yang termasuk dalam himpunan xy.

      -- Mengembalikan yxTxyom. Semua x atau y akhir dihapus.
      select rtrim('yxTxyomxx', 'xy');
      -- Setara dengan:
      select trim(trailing 'xy' from 'yxTxyomxx');
    • Contoh 3: Parameter input bernilai NULL. Pernyataan contoh:

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

SOUNDEX

  • Sintaksis

    string soundex(string <str>)
  • Deskripsi

    Mengonversi string standar menjadi string SOUNDEX.

  • Parameter

    str: Wajib. String yang akan dikonversi. Parameter ini bertipe STRING. Fungsi ini merupakan ekstensi di MaxCompute V2.0.

  • Nilai kembali

    Nilai kembali bertipe STRING. Jika str bernilai NULL, fungsi mengembalikan NULL.

  • Contoh

    • Contoh 1: Mengonversi string hello menjadi string SOUNDEX. Pernyataan contoh:

      -- Mengembalikan H400.
      select soundex('hello');
    • Contoh 2: Parameter input bernilai NULL. Pernyataan contoh:

      -- Mengembalikan NULL.
      select soundex(null);

SPACE

  • Sintaksis

    string space(bigint <n>)
  • Deskripsi

    Menghasilkan string yang terdiri atas n spasi.

  • Parameter

    n: wajib. Tipe BIGINT. Ukuran nilai tidak boleh melebihi 2 MB.

  • Nilai kembali

    Mengembalikan STRING. Nilai kembali mengikuti aturan berikut:

    • Jika n kosong, error dikembalikan.

    • Jika n bernilai NULL, NULL dikembalikan.

  • Contoh

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

SPLIT

  • Sintaksis

    ARRAY<STRING> SPLIT(STRING <source>, STRING <delimiter>[, BOOLEAN <trimTailEmpty>])
    
    -- Contoh standar.
    -- Mengembalikan ["a","b","c"].
    SELECT SPLIT('a,b,c', ',');
  • Parameter

      • source: Wajib. String yang akan dipisahkan. Tipe datanya adalah STRING.

      • delimiter: Wajib. Pemisah yang digunakan untuk memisahkan string. Parameter ini mendukung ekspresi reguler. Tipe datanya adalah STRING.

      • trimTailEmpty: Opsional. Menentukan apakah string kosong akhir dipertahankan. Nilai default adalah true. Jika Anda mengatur parameter ini ke false, string kosong akhir dipertahankan. Tipe datanya adalah BOOLEAN.

  • Nilai kembali

    Mengembalikan nilai bertipe ARRAY<STRING>.

  • Contoh

    -- Nilai kembali adalah ["a"," b"," c"]. 
    select split("a, b, c", ",");
    
    -- Secara default tidak mengembalikan string kosong.
    select split("a, b, c,,", ",");
    -- Hasil berikut dikembalikan:
    +------------+
    | _c0        |
    +------------+
    | ["a"," b"," c"] |
    +------------+
    
    -- Jika Anda perlu mengembalikan string kosong, jalankan pernyataan berikut:
    select split("a, b, c,,", ",", false);
    -- Hasil berikut dikembalikan:
    +------------+
    | _c0        |
    +------------+
    | ["a"," b"," c","",""] |
    +------------+

SPLIT_PART

  • Sintaksis

    string split_part(string <str>, string <separator>, bigint <start>[, bigint <end>])
  • Deskripsi

    Memisahkan string str menggunakan delimiter separator dan mengembalikan substring dari bagian start hingga end (interval tertutup).

  • Parameter

    • str: wajib. Tipe STRING. String yang akan dipisahkan. Jika input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, akan dikonversi secara implisit ke STRING.

    • separator: wajib. Konstanta STRING. Delimiter (satu karakter atau string).

    • start: wajib. Konstanta BIGINT, harus lebih besar dari 0. Nomor bagian awal (dihitung dari 1).

    • end: konstanta BIGINT yang lebih besar dari atau sama dengan start. Parameter ini menentukan nomor segmen akhir yang akan dikembalikan. Jika parameter ini tidak ditentukan, nilainya default ke nilai start, dan hanya segmen yang ditentukan oleh start yang dikembalikan.

  • Deskripsi Nilai Kembali

    Mengembalikan STRING. Nilai kembali mengikuti aturan berikut:

    • Jika start melebihi jumlah bagian aktual (misalnya, ada 6 bagian tetapi start > 6), string kosong dikembalikan.

    • Jika separator tidak ditemukan dalam str dan start = 1, seluruh str dikembalikan. Jika str kosong, string kosong dikembalikan.

    • Jika separator kosong, str asli dikembalikan.

    • Jika end melebihi jumlah bagian, substring dari start hingga bagian terakhir dikembalikan.

    • Jika str bukan bertipe STRING, BIGINT, DOUBLE, DECIMAL, atau DATETIME, error dikembalikan.

    • Jika separator bukan konstanta STRING, error dikembalikan.

    • Jika start atau end bukan konstanta BIGINT, error dikembalikan.

    • Jika parameter apa pun kecuali separator bernilai NULL, NULL dikembalikan.

  • Contoh

    • Contoh 1: Pisahkan string a,b,c,d menggunakan delimiter , dan kembalikan bagian yang ditentukan. Pernyataan contoh:

      -- Mengembalikan a.
      select split_part('a,b,c,d', ',', 1);
      -- Mengembalikan a,b.
      select split_part('a,b,c,d', ',', 1, 2);
    • Contoh 2: start melebihi jumlah bagian aktual. Pernyataan contoh:

      -- Mengembalikan string kosong.
      select split_part('a,b,c,d', ',', 10);
    • Contoh 3: separator tidak ditemukan dalam str. Pernyataan contoh:

      -- Mengembalikan a,b,c,d.
      select split_part('a,b,c,d', ':', 1);
      -- Mengembalikan string kosong.
      select split_part('a,b,c,d', ':', 2);
    • Contoh 4: separator kosong. Pernyataan contoh:

      -- Mengembalikan a,b,c,d.
      select split_part('a,b,c,d', '', 1);
    • Contoh 5: end melebihi jumlah bagian aktual. Pernyataan contoh:

      -- Mengembalikan b,c,d.
      select split_part('a,b,c,d', ',', 2, 6);
    • Contoh 6: Parameter input apa pun kecuali separator bernilai NULL. Pernyataan contoh:

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

SUBSTR

  • Sintaksis

    string substr(string <str>, bigint <start_position>[, bigint <length>])
  • Deskripsi

    Mengembalikan substring dari str mulai dari start_position dengan panjang length.

  • Parameter

    • str: wajib. Tipe STRING. Jika input bertipe BIGINT, DECIMAL, DOUBLE, atau DATETIME, akan dikonversi secara implisit ke STRING.

    • start_position: wajib. Tipe BIGINT. Posisi awal default adalah 1.

      • Versi tipe data kompatibel Hive: Jika start_position=0, berperilaku sama seperti posisi 1.

      • Versi tipe data 1.0 dan 2.0: Jika start_position=0, mengembalikan NULL.

    • length: opsional. Tipe BIGINT. Panjang substring harus >0.

      Penting
      • Jika setproject odps.function.strictmode=false: length<0 mengembalikan kosong.

      • Jika setproject odps.function.strictmode=true: length<0 mengembalikan error.

  • Nilai kembali

    Mengembalikan tipe STRING. Nilai kembali mengikuti aturan berikut:

    • Jika str bukan bertipe STRING, BIGINT, DECIMAL, DOUBLE, atau DATETIME, mengembalikan error.

    • Jika length bukan BIGINT atau ≤0, mengembalikan error.

    • Jika Anda menghilangkan length, substring memanjang hingga akhir str.

    • Jika str, start_position, atau length bernilai NULL, mengembalikan NULL.

  • Contoh

    • Contoh 1: Mengembalikan substring dari abc dari posisi yang ditentukan dengan panjang yang ditentukan. Pernyataan contoh:

      -- Mengembalikan bc.
      select substr('abc', 2);
      -- Mengembalikan b.
      select substr('abc', 2, 1);
      -- Mengembalikan bc.
      select substr('abc',-2 , 2);
    • Contoh 2: Saat parameter input bernilai NULL. Pernyataan contoh:

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

SUBSTRING

  • Sintaksis

    string substring(string|binary <str>, int <start_position>[, int <length>])
  • Deskripsi

    Mengembalikan substring dari str mulai dari start_position dengan length.

  • Parameter

    • str: wajib. Parameter ini bertipe STRING atau BINARY.

    • start_position: wajib. Parameter ini bertipe INT. Posisi awal berbasis 1. Jika start_position adalah 0, string kosong dikembalikan. Jika start_position bernilai negatif, posisi dihitung mundur dari akhir string. Dalam hal ini, -1 mengacu pada karakter terakhir, dan penghitungan berlanjut mundur secara berurutan.

    • length: opsional. Parameter ini bertipe BIGINT. Panjang substring harus lebih besar dari 0.

  • Nilai kembali

    Nilai kembali bertipe STRING. Mengikuti aturan berikut:

    • Jika str bukan bertipe STRING atau BINARY, error dikembalikan.

    • Jika length bukan bertipe BIGINT atau kurang dari atau sama dengan 0, error dikembalikan.

    • Ketika parameter length dihilangkan, substring hingga akhir str dikembalikan.

    • Jika str, start_position, atau length bernilai NULL, NULL dikembalikan.

  • Contoh

    • Contoh 1: Contoh ini mengembalikan substring dari abc dari posisi yang ditentukan dengan panjang yang ditentukan. Pernyataan contoh:

      -- Mengembalikan bc.
      select substring('abc', 2);
      -- Mengembalikan b.
      select substring('abc', 2, 1);
      -- Mengembalikan bc.
      select substring('abc',-2,2);
      -- Mengembalikan ab.
      select substring('abc',-3,2);
      -- Mengembalikan 001.
      substring(bin(2345), 2, 3);
    • Contoh 2: Contoh ini menunjukkan kasus di mana salah satu parameter input bernilai NULL. Pernyataan contoh:

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

SUBSTRING_INDEX

  • Sintaksis

    string substring_index(string <str>, string <separator>, int <count>)
  • Deskripsi

    Fungsi ini mengekstrak substring dari string str, baik sebelum maupun sesudah kemunculan ke-count dari delimiter. Jika count bernilai positif, pencarian delimiter dimulai dari kiri. Jika count bernilai negatif, pencarian dimulai dari kanan. Fungsi ini merupakan fungsi ekstensi MaxCompute V2.0.

  • Parameter

    • str: wajib. Bertipe STRING. Ini adalah string yang akan diekstrak.

    • separator: wajib. Delimiter bertipe STRING.

    • count: Wajib. Nilai INT yang menentukan posisi delimiter.

  • Nilai kembali

    Fungsi ini mengembalikan nilai bertipe STRING. Jika ada parameter input yang bernilai NULL, fungsi mengembalikan NULL.

  • Contoh

    • Contoh 1: Mengekstrak dari string https://www.alibabacloud.com. Pernyataan contoh:

      -- Mengembalikan https://www.alibabacloud.
      select substring_index('https://www.alibabacloud.com', '.', 2);
      -- Mengembalikan alibabacloud.com.
      select substring_index('https://www.alibabacloud.com', '.', -2);
    • Contoh 2: Parameter input bernilai NULL. Pernyataan contoh:

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

TO_CHAR

  • Sintaksis

    string to_char(boolean <value>)
    string to_char(bigint <value>)
    string to_char(double <value>)
    string to_char(decimal <value>)
  • Deskripsi

    Mengonversi nilai bertipe BOOLEAN, BIGINT, DECIMAL, atau DOUBLE ke representasi STRING-nya.

  • Parameter

    value: wajib. Nilai bertipe BOOLEAN, BIGINT, DECIMAL, atau DOUBLE.

  • Nilai kembali

    Mengembalikan nilai bertipe STRING. Nilai kembali mengikuti aturan berikut:

    • Jika value bukan bertipe BOOLEAN, BIGINT, DECIMAL, atau DOUBLE, fungsi mengembalikan error.

    • Jika value bernilai NULL, fungsi mengembalikan NULL.

  • Contoh

    • Contoh 1: Mengonversi nilai ke representasi STRING. Pernyataan contoh:

      -- Mengembalikan 123.
      select to_char(123);
      -- Mengembalikan TRUE.
      select to_char(true);
      -- Mengembalikan 1.23.
      select to_char(1.23);
    • Contoh 2: Parameter input bernilai NULL. Pernyataan contoh:

      -- Mengembalikan NULL.
      select to_char(null);

TO_JSON

  • Sintaksis

    string to_json(<expr>)
  • Deskripsi

    Mengonversi ekspresi yang ditentukan oleh expr bertipe data kompleks tertentu menjadi string JSON.

  • Parameter

    expr: wajib. Ekspresi bertipe ARRAY, MAP, atau STRUCT.

    Catatan

    Jika ekspresi input bertipe STRUCT (struct<key1:value1, key2:value2>), perhatikan poin berikut:

    • Semua kunci dikonversi menjadi huruf kecil saat Anda mengonversi ekspresi menjadi string JSON.

    • Jika value bernilai null, pasangan kunci-nilai tempat value tersebut berada tidak disertakan dalam string JSON yang dikembalikan. Misalnya, jika value2 bernilai null, key2:value2 tidak disertakan dalam string JSON yang dikembalikan.

  • Nilai kembali

    String JSON dikembalikan.

  • Contoh

    • Contoh 1: Mengonversi ekspresi bertipe data kompleks tertentu menjadi string JSON. Pernyataan contoh:

      -- Nilai kembali adalah {"a":1,"b":2}. 
      select to_json(named_struct('a', 1, 'b', 2));
      -- Nilai kembali adalah {"time":"26/08/2015"}. 
      select to_json(named_struct('time', "26/08/2015"));
      -- Nilai kembali adalah [{"a":1,"b":2}]. 
      select to_json(array(named_struct('a', 1, 'b', 2)));
      -- Nilai kembali adalah {"a":{"b":1}}. 
      select to_json(map('a', named_struct('b', 1)));
      -- Nilai kembali adalah {"a":1}. 
      select to_json(map('a', 1));
      -- Nilai kembali adalah [{"a":1}]. 
      select to_json(array((map('a', 1))));
    • Contoh 2: Ekspresi input bertipe STRUCT. Pernyataan contoh:

      -- Nilai kembali adalah {"a":"B"}. Jika ekspresi bertipe STRUCT dikonversi menjadi string JSON, semua kunci dikonversi menjadi huruf kecil. 
      select to_json(named_struct("A", "B"));
      -- Nilai kembali adalah {"k2":"v2"}. Pasangan kunci-nilai tempat null berada tidak disertakan dalam string JSON yang dikembalikan. 
      select to_json(named_struct("k1", cast(null as string), "k2", "v2"));

TOLOWER

  • Sintaksis

    string tolower(string <source>)
  • Deskripsi

    Mengonversi huruf kapital bahasa Inggris dalam string source menjadi huruf kecil.

  • Parameter

    source: wajib. Nilai bertipe STRING. Jika input berupa nilai BIGINT, DOUBLE, DECIMAL, atau DATETIME, akan dikonversi secara implisit ke tipe STRING. Fungsi ini hanya beroperasi pada karakter bahasa Inggris.

  • Nilai kembali

    Mengembalikan nilai bertipe STRING. Nilai yang dikembalikan didasarkan pada aturan berikut:

    • Jika tipe data source bukan STRING, BIGINT, DOUBLE, DECIMAL, atau DATETIME, error dikembalikan.

    • Jika source bernilai NULL, NULL dikembalikan.

  • Contoh

    • Contoh 1: Mengonversi huruf kapital menjadi huruf kecil. Pernyataan contoh:

      -- Mengembalikan abcd.
      select tolower('aBcd');
      -- Mengembalikan 中国fighting.
      select tolower('中国Fighting');
    • Contoh 2: Parameter input bernilai NULL. Pernyataan contoh:

      -- Mengembalikan NULL.
      select tolower(null);

TOUPPER

  • Sintaksis

    string toupper(string <source>)
  • Deskripsi

    Mengonversi karakter huruf kecil dalam string source menjadi karakter huruf kapital yang sesuai.

  • Parameter

    source: wajib. Tipe STRING. Jika input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, akan dikonversi secara implisit ke STRING. Hanya mendukung karakter bahasa Inggris.

  • Nilai kembali

    Mengembalikan nilai bertipe STRING. Nilai yang dikembalikan didasarkan pada aturan berikut:

    • Jika tipe data source bukan STRING, BIGINT, DOUBLE, DECIMAL, atau DATETIME, error dikembalikan.

    • Jika source bernilai NULL, NULL dikembalikan.

  • Contoh

    • Contoh 1: Mengonversi huruf kecil menjadi huruf kapital. Pernyataan contoh:

      -- Mengembalikan ABCD.
      select toupper('aBcd');
      -- Mengembalikan ChinaFIGHTING.
      select toupper('中国Fighting');
    • Contoh 2: Parameter input bernilai NULL. Pernyataan contoh:

      -- Mengembalikan NULL.
      select toupper(null);

TRANSLATE

  • Sintaksis

    string translate(string|varchar <str1>, string|varchar <str2>, string|varchar <str3>)
  • Deskripsi

    Mengganti setiap karakter dalam str1 yang muncul dalam str2 dengan karakter yang sesuai dalam str3. Jika tidak ditemukan kecocokan, tidak terjadi penggantian. Fungsi ini merupakan ekstensi di MaxCompute V2.0.

  • Nilai kembali

    Mengembalikan STRING. Jika ada parameter input yang bernilai NULL, fungsi mengembalikan NULL.

  • Contoh

    • Contoh 1: Ganti setiap karakter dalam ababab yang muncul dalam abab dengan karakter yang sesuai dalam cd. Pernyataan contoh:

      -- Mengembalikan cdcdcd.
      select translate('ababab','abab','cd');
    • Contoh 2: Ganti setiap karakter dalam ababab yang muncul dalam abab dengan karakter yang sesuai dalam cdefg. Pernyataan contoh:

      -- Mengembalikan cdcdcd.
      select translate('ababab','abab','cdefg');
    • Contoh 3: Salah satu parameter input bernilai NULL. Pernyataan contoh:

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

TRIM

  • Sintaksis

    string trim(string <str>[,<trimChars>])
    string trim([BOTH] [<trimChars>] from <str>)
  • Deskripsi

    Menghapus karakter dari kedua ujung str:

    • Jika Anda tidak menentukan trimChars, fungsi menghapus spasi secara default.

    • Jika Anda menentukan trimChars, fungsi memperlakukan karakter dalam trimChars sebagai himpunan dan menghapus substring terpanjang yang mungkin yang hanya terdiri atas karakter dari himpunan ini dari kedua ujung kiri dan kanan str.

  • Parameter

    • str: wajib. Tipe STRING. String yang akan dipangkas. Jika input bertipe BIGINT, DECIMAL, DOUBLE, atau DATETIME, akan dikonversi secara implisit ke STRING.

    • trimChars: opsional. Tipe STRING. Karakter yang akan dihapus.

  • Nilai kembali

    Mengembalikan tipe STRING. Nilai kembali mengikuti aturan berikut:

    • Jika str bukan bertipe STRING, BIGINT, DOUBLE, DECIMAL, atau DATETIME, mengembalikan error.

    • Jika str atau trimChars bernilai NULL, mengembalikan NULL.

  • Contoh

    • Contoh 1: Hapus spasi dari kedua ujung string yxTxyomxx . Pernyataan contoh:

      -- Mengembalikan yxTxyomxx.
      select trim(' yxTxyomxx ');
      -- Setara dengan:
      select trim(both from ' yxTxyomxx ');
      select trim(from ' yxTxyomxx ');
    • Contoh 2: Hapus semua karakter dari kedua ujung string yxTxyomxx yang termasuk dalam himpunan xy.

      -- Mengembalikan Txyom. Semua x atau y di kedua ujung dihapus.
      select trim('yxTxyomxx', 'xy');
      -- Setara dengan:
      select trim(both 'xy' from 'yxTxyomxx');
      select trim('xy' from 'yxTxyomxx');
    • Contoh 3: Parameter input bernilai NULL. Pernyataan contoh:

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

URL_DECODE

  • Sintaksis

    string url_decode(string <input>[, string <encoding>])
  • Deskripsi

    Mengonversi string input dari format application/x-www-form-urlencoded MIME ke karakter standar. Fungsi ini merupakan kebalikan dari url_encode. Aturan encoding adalah sebagai berikut:

    • a–z dan A–Z tetap tidak berubah.

    • Titik (.), tanda hubung (-), tanda bintang (*), dan garis bawah (_) tetap tidak berubah.

    • Tanda plus (+) dikonversi menjadi spasi.

    • Urutan dalam format %xy dikonversi menjadi nilai byte. Byte berurutan didekode menjadi string menggunakan nama encoding yang ditentukan.

    • Semua karakter lain tetap tidak berubah.

  • Parameter

    • input: Parameter ini wajib dan bertipe STRING. Ini merepresentasikan string input.

    • encoding: Parameter ini opsional dan menentukan format encoding. Mendukung format seperti GBK dan UTF-8. Jika tidak ditentukan, encoding default adalah UTF-8.

  • Nilai kembali

    Fungsi ini mengembalikan tipe STRING yang di-encode UTF-8. Jika parameter input atau encoding bernilai NULL, fungsi mengembalikan NULL.

  • Contoh

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

URL_ENCODE

  • Sintaksis

    string url_encode(string <input>[, string <encoding>])
  • Deskripsi

    Mengencode string input dalam format application/x-www-form-urlencoded MIME. Aturan encoding:

    • Huruf a–z dan A–Z tetap tidak berubah.

    • Titik (.), tanda hubung (-), tanda bintang (*), dan garis bawah (_) tetap tidak berubah.

    • Spasi dikonversi menjadi tanda plus (+).

    • Semua karakter lain dikonversi menjadi nilai byte menggunakan encoding yang ditentukan. Setiap byte muncul sebagai %xy, di mana xy adalah representasi heksadesimal karakter tersebut.

  • Parameter

    • input: Wajib. Tipe STRING. String yang akan diinput.

    • encoding: opsional. Format encoding. Format yang didukung meliputi GBK dan UTF-8. Default adalah UTF-8 jika tidak ditentukan.

  • Nilai kembali

    Mengembalikan STRING. Jika input atau encoding bernilai NULL, mengembalikan NULL.

  • Contoh

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

Referensi

Untuk memperluas fungsi bawaan, buat fungsi yang ditentukan pengguna (UDF). Untuk informasi lebih lanjut, lihat Ikhtisar UDF MaxCompute.