All Products
Search
Document Center

MaxCompute:Ikhtisar Fungsi String

Last Updated:Sep 08, 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 di 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 yang ditentukan dalam string yang dipisahkan koma.

FORMAT_NUMBER

Mengonversi angka menjadi string dalam format yang ditentukan.

FROM_CHARSET

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

FROM_JSON

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

GET_JSON_OBJECT

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

INITCAP

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

INSTR

Menemukan posisi string A dalam string B.

IS_ENCODING

Menentukan apakah string dapat dikonversi dari character set A ke character set 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 yang ditentukan.

KEYVALUE_TUPLE

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

LENGTH

Menghitung panjang string.

LENGTHB

Menghitung panjang byte dari string.

LOCATE

Menemukan posisi substring yang ditentukan dalam string.

LPAD

Menambahkan padding ke kiri string hingga panjang yang ditentukan.

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 yang ditentukan.

PARSE_URL_TUPLE

Mengurai URL dan mengembalikan informasi tentang beberapa bagian.

REGEXP_COUNT

Menghitung substring yang sesuai dengan pola yang ditentukan mulai dari posisi yang ditentukan.

REGEXP_EXTRACT

Memisahkan string menjadi grup berdasarkan pola yang ditentukan dan mengembalikan string dari grup yang ditentukan.

REGEXP_EXTRACT_ALL

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

REGEXP_INSTR

Mengembalikan posisi awal atau akhir substring yang sesuai dengan pola yang ditentukan untuk kemunculan yang ditentukan mulai dari posisi yang ditentukan.

REGEXP_REPLACE

Mengganti substring yang sesuai dengan pola yang ditentukan untuk kemunculan yang ditentukan dengan string lain.

REGEXP_SUBSTR

Mengembalikan substring yang sesuai dengan pola yang ditentukan untuk kemunculan yang ditentukan mulai dari posisi yang ditentukan.

REPEAT

Mengembalikan string yang diulang sejumlah kali yang ditentukan.

REPLACE

Mengganti substring yang sesuai dengan string yang ditentukan dengan string lain.

REVERSE

Mengembalikan kebalikan dari string.

RPAD

Menambahkan padding ke kanan string hingga panjang yang ditentukan.

RTRIM

Menghapus karakter dari ujung kanan string.

SOUNDEX

Mengonversi string standar menjadi string SOUNDEX.

SPACE

Menghasilkan string spasi.

SPLIT

Memisahkan string menggunakan delimiter dan mengembalikan array.

SPLIT_PART

Memisahkan string menggunakan delimiter dan mengembalikan bagian yang ditentukan.

SUBSTR

Mengembalikan substring dari string bertipe STRING yang dimulai dari posisi yang ditentukan dengan panjang yang ditentukan.

SUBSTRING

Mengembalikan substring dari string bertipe STRING atau BINARY yang dimulai dari posisi yang ditentukan dengan panjang yang ditentukan.

SUBSTRING_INDEX

Mengekstrak substring sebelum atau sesudah kemunculan delimiter yang ditentukan.

TO_CHAR

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

TO_JSON

Mengonversi tipe kompleks yang ditentukan 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.

Catatan penggunaan

MaxCompute V2.0 menyediakan fungsi tambahan. Jika fungsi yang Anda gunakan melibatkan tipe data baru yang didukung dalam edisi tipe data MaxCompute V2.0, Anda harus menjalankan pernyataan SET untuk mengaktifkan edisi tersebut. Tipe data baru tersebut meliputi TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP, dan BINARY.

  • Tingkat sesi: Untuk menggunakan edisi tipe data MaxCompute V2.0, tambahkan set odps.sql.type.system.odps2=true; sebelum pernyataan SQL yang ingin Anda jalankan, lalu commit dan eksekusi bersama-sama.

  • Tingkat proyek: Pemilik proyek dapat mengaktifkan edisi tipe data MaxCompute V2.0 untuk seluruh proyek sesuai kebutuhan. Konfigurasi akan berlaku dalam 10 hingga 15 menit. Untuk mengaktifkannya pada tingkat proyek, jalankan perintah berikut:

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

    Untuk informasi lebih lanjut tentang setproject, lihat Operasi proyek. Untuk informasi lebih lanjut tentang tindakan pencegahan saat mengaktifkan edisi tipe data MaxCompute V2.0 pada tingkat proyek, lihat Panduan versi tipe data.

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, secara implisit dikonversi 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, kesalahan dikembalikan.

    • Jika str adalah NULL, NULL dikembalikan.

  • Contoh

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

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

      -- Mengembalikan NULL.
      select ascii(null);

CHAR_MATCHCOUNT

  • Sintaksis

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

    Menghitung jumlah karakter dalam str1 yang muncul di 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, nilai negatif dikembalikan.

  • Nilai kembali

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

  • Contoh

    • Contoh 1: Hitung jumlah karakter dari string aabc yang muncul di abcde. Pernyataan sampel:

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

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

CHR

  • Sintaksis

    string chr(bigint <ascii>)
  • Deskripsi

    Mengonversi kode ASCII yang ditentukan menjadi karakter.

  • Parameter

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

  • Nilai kembali

    Mengembalikan nilai bertipe STRING. Nilai kembali mengikuti aturan berikut:

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

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

    • Jika ascii adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh 1: Mengonversi kode ASCII 100 menjadi karakter. Pernyataan sampel:

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

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

      --Input secara implisit dikonversi 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, secara implisit dikonversi menjadi nilai bertipe STRING sebelum perhitungan. Jika nilai input bertipe data lain, kesalahan dikembalikan.

  • Nilai kembali

    • Nilai bertipe ARRAY dikembalikan. Jika salah satu array input adalah 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 sampel:

      -- 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 sampel:

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

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

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

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

      -- 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 dalam MaxCompute V2.0.

  • Parameter

    • separator: wajib. Delimiter bertipe STRING.

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

    • a: wajib. Tipe 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, kesalahan dikembalikan.

    • Jika tidak ada parameter input yang diberikan atau salah satu parameter input adalah NULL, NULL dikembalikan.

  • Contoh

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

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

      -

    • Contoh 2: Salah satu parameter input adalah NULL. Pernyataan sampel:

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

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

    Wajib

    Deskripsi

    str

    Ya

    Tipe BINARY. String yang akan didekode.

    charset

    Ya

    Tipe 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 adalah NULL, NULL dikembalikan.

  • Contoh

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

      -- 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 sampel:

      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. Tipe STRING. String yang akan di-re-encode.

    • charset: wajib. Tipe 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 adalah NULL, NULL dikembalikan.

  • Contoh

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

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

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

      -- 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 dari 1.

  • Parameter

    Parameter

    Wajib

    Deskripsi

    str1

    Ya

    Tipe STRING. String yang dicari.

    str2

    Ya

    Tipe STRING. String yang dipisahkan oleh delimiter.

    delimiter

    Tidak

    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, 0 dikembalikan.

    • Jika str1 atau str2 adalah NULL, NULL dikembalikan.

  • Contoh

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

      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 sampel:

      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 sampel:

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

      Mengembalikan:

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

      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 yang mirip dengan #,###,###.##. 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 besar dari 340, kesalahan dikembalikan.

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

  • Contoh

    • Contoh 1: Format angka seperti yang ditentukan. Pernyataan sampel:

      -- 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 sampel:

      -- 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 kesalahan. Tidak ada pemrosesan yang dilakukan. Ini adalah nilai default.

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

      • IGNORE: mengabaikan kesalahan dan melanjutkan menjalankan perintah.

  • Nilai kembali

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

    • Jika salah satu parameter input adalah NULL, mengembalikan NULL.

    • Jika salah satu parameter input adalah string kosong, mengembalikan kesalahan.

  • Contoh

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

      SELECT FROM_CHARSET(unhex('e58aa0e6b2b9e9949fe696a4e68bb70a'),'UTF-8', 'TRANSLIT');
    • Contoh 2: Mengonversi data biner yang di-encode GBK menjadi string yang di-encode UTF-8.

      SELECT FROM_CHARSET(unhex('b9feb9febac3a4ce'), 'GBK');
    • Contoh 3: Jika parameter input adalah null, null dikembalikan.

      SELECT FROM_CHARSET(unhex('b9feb9febac3a4ce'), 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 pernyataan untuk membuat 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 kemudahan 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: Mengonversi string JSON tertentu menjadi nilai tipe data tertentu. Pernyataan sampel:

      -- 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 sampel:

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

GET_JSON_OBJECT

  • Sintaksis

    STRING GET_JSON_OBJECT(JSON|STRING <json>, STRING <json_path>)
    
    -- Contoh: Mengembalikan Alice.
    SELECT GET_JSON_OBJECT(JSON '{"name": "Alice", "age": 30}', '$.name');
  • Deskripsi

    Fungsi GET_JSON_OBJECT mengekstrak string dari string JSON atau nilai bertipe data JSON berdasarkan path JSON yang ditentukan, json_path.

  • Catatan penggunaan

    • Fungsi GET_JSON_OBJECT tidak mendukung sintaksis ekspresi reguler dalam path JSON.

    • Sintaksis path JSON untuk tipe data JSON baru berbeda dari spesifikasi aslinya. Hal ini dapat menyebabkan masalah kompatibilitas.

    • Jika kueri berisi beberapa fungsi GET_JSON_OBJECT yang memproses data JSON yang sama, fungsi tersebut berulang kali mengurai string JSON yang sama. Hal ini dapat berdampak negatif pada kinerja dan meningkatkan biaya. Untuk menghindarinya, Anda dapat menggunakan GET_JSON_OBJECT dengan fungsi user-defined table-valued function (UDTF) untuk mengubah data log JSON.

  • Parameter

    • json: Wajib. Data JSON yang ingin Anda proses. Parameter ini mendukung dua tipe input: JSON dan STRING.

      • Tipe JSON: Nilai bertipe data JSON. Nilai harus dalam format {"Key":"Value", "Key":"Value",...}, seperti JSON '{"name": "Alice", "age": 30}'.

      • Tipe STRING: Jika input adalah STRING, harus memenuhi persyaratan format berikut:

        • String harus dalam format '{"Key":"Value", "Key":"Value",...}', seperti '{"name": "Alice", "age": 30}'.

        • Tanda kutip ganda (") harus di-escape dengan dua backslash (\\).

        • Tanda kutip tunggal (') harus di-escape dengan satu backslash (\).

    • json_path: Wajib. STRING yang menentukan ekspresi path JSON yang digunakan untuk mengekstrak data. Path harus dimulai dengan karakter $, seperti $.aliyun.test[0].demo. Ekspresi path menggunakan karakter berikut:

      • $: Menunjukkan node root.

      • . atau ['']: Menunjukkan node anak. Ini digunakan untuk mengurai objek JSON, seperti $.store.book. Jika kunci JSON berisi titik (.), Anda dapat menggunakan [''] sebagai gantinya.

        Mengekstrak data menggunakan [''] hanya didukung jika Anda menjalankan pernyataan SET odps.sql.udf.getjsonobj.new=true;.

      • []: [number] menunjukkan subscript array. Subscript dimulai dari 0.

      • *: Karakter wildcard untuk []. Mengembalikan seluruh array. Asterisk (*) tidak dapat di-escape.

  • Nilai kembali

    Mengembalikan nilai bertipe STRING. Nilai ini adalah data yang diekstrak dari path yang ditentukan. Fungsi ini mengikuti aturan berikut untuk nilai kembalinya:

    • Jika json valid dan json_path ada, string yang sesuai dikembalikan.

    • Jika json kosong atau memiliki format yang tidak valid, NULL dikembalikan.

    • Jika json_path berisi [*], nilai kembali tidak dalam format array. Untuk memaksa nilai kembali dalam format array yang seragam, Anda dapat menjalankan pernyataan SET odps.sql.force.getjsonobj.array.format=true;.

    • Jika json_path tidak valid, NULL dikembalikan.

    Perilaku pengembalian

    • Anda dapat mengontrol perilaku pengembalian fungsi dengan mengatur flag tingkat proyek atau sesi menggunakan perintah berikut: SET odps.sql.udf.getjsonobj.new=true/false;.

      Dua perilaku pengembalian yang sesuai dengan pengaturan flag yang berbeda adalah sebagai berikut:

      Penting

      Kami menyarankan Anda menggunakan konfigurasi SET odps.sql.udf.getjsonobj.new=true;. Konfigurasi ini memberikan perilaku fungsi yang lebih standar, menyederhanakan pemrosesan data, dan meningkatkan kinerja. Jika proyek MaxCompute Anda memiliki pekerjaan yang sudah ada yang bergantung pada perilaku escaping karakter tereservasi JSON, kami menyarankan Anda tetap menggunakan perilaku aslinya. Hal ini mencegah kesalahan atau masalah kebenaran yang mungkin terjadi jika Anda beralih ke perilaku baru tanpa verifikasi.

      Pengaturan Parameter

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

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

      Perilaku pengembalian

      Mengeluarkan string asli tanpa modifikasi.

      Mengeluarkan string dengan karakter tereservasi JSON di-escape.

      Nilai kembali adalah string JSON yang dapat diurai langsung. Anda tidak perlu menggunakan fungsi seperti REPLACE atau REGEXP_REPLACE untuk mengganti backslash.

      Karakter tereservasi JSON, seperti line feed (\n) dan tanda kutip ("), dikembalikan sebagai string '\n' dan '\"'.

      Penguraian kunci duplikat

      Objek JSON dapat berisi kunci duplikat, yang dapat diurai dengan sukses.

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

      Objek JSON tidak dapat berisi kunci duplikat. Jika demikian, penguraian mungkin gagal.

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

      Urutan output

      Output diurutkan sesuai urutan string JSON asli.

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

      Output diurutkan secara alfabetis.

      -- Mengembalikan {"a":"2","b":"1"}.
      SELECT GET_JSON_OBJECT('{"b":{"b":"1","a":"2"},"a":"2"}', '$.b');
    • Jika mode kompatibilitas Hive diaktifkan dengan menjalankan perintah SET odps.sql.hive.compatible=true;, fungsi GET_JSON_OBJECT mempertahankan string asli dalam nilai kembalinya.

    • Untuk proyek MaxCompute yang dibuat pada atau setelah 21 Januari 2021, perilaku pengembalian default fungsi GET_JSON_OBJECT adalah mempertahankan string asli.

    • Untuk proyek MaxCompute yang dibuat sebelum 21 Januari 2021, perilaku pengembalian default fungsi GET_JSON_OBJECT adalah meng-escape karakter tereservasi JSON.

    • Anda dapat menggunakan contoh berikut untuk menentukan perilaku mana yang digunakan oleh fungsi GET_JSON_OBJECT di proyek MaxCompute Anda. Untuk melakukan ini, jalankan perintah berikut:

      SELECT GET_JSON_OBJECT('{"a":"[\\"1\\"]"}', '$.a');
      --Nilai kembali jika perilakunya adalah meng-escape karakter tereservasi JSON:
      [\"1\"]
      
      --Nilai kembali jika perilakunya adalah mempertahankan string asli:
      ["1"]
      Untuk mengganti perilaku pengembalian default fungsi GET_JSON_OBJECT di proyek Anda menjadi mempertahankan string asli, Anda dapat mengirimkan tiket. Hal ini menghindari kebutuhan untuk mengatur properti pada tingkat sesi untuk setiap sesi.
  • Contoh

    Parameter input JSON

    Contoh 1: Mendapatkan nilai untuk kunci tertentu dari data JSON

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

    Contoh 2: json_path yang tidak valid mengembalikan NULL.

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

    Parameter input STRING

    Contoh 1: Mengekstrak informasi dari objek JSON src_json.json

    -- Siapkan data uji.
    CREATE TABLE IF NOT EXISTS src_json (
        json STRING
    );
    
    INSERT OVERWRITE TABLE src_json
    VALUES
    ('{"store":
      {"fruit":[{"weight":8,"type":"apple"},
        {"weight":9,"type":"pear"}],
         "bicycle":{"price":19.95,
         "color":"red"}},
       "email":"amy@only_for_json_udf_test.net",
       "owner":"amy"}');
    
    -- Ekstrak informasi bidang owner. Nilai kembali adalah amy.
    SELECT GET_JSON_OBJECT(src_json.json, '$.owner') FROM src_json;
    
    -- Opsional. Output dengan mempertahankan string asli.
    SET odps.sql.udf.getjsonobj.new=true;
    -- Ekstrak informasi array pertama dalam bidang store.fruit. Nilai kembali adalah {"weight":8,"type":"apple"}.
    SELECT GET_JSON_OBJECT(src_json.json, '$.store.fruit[0]') FROM src_json;
    
    -- Ekstrak informasi bidang yang tidak ada. Nilai kembali adalah NULL.
    SELECT GET_JSON_OBJECT(src_json.json, '$.non_exist_key') FROM src_json;

    Contoh 2: Mengekstrak informasi dari data array JSON

    -- Mengembalikan 2222.
    SELECT GET_JSON_OBJECT('{"array":[["aaaa",1111],["bbbb",2222],["cccc",3333]]}','$.array[1][1]');
    
    -- Output dengan mempertahankan string asli.
    SET odps.sql.udf.getjsonobj.new=true;
    -- Mengembalikan ["h0","h1","h2"].
    SELECT GET_JSON_OBJECT('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[*]');
    
    -- Output dengan meng-escape karakter tereservasi JSON.
    SET odps.sql.udf.getjsonobj.new=false;
    -- Mengembalikan ["h0","h1","h2"].
    SELECT GET_JSON_OBJECT('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[*]');
    
    -- Mengembalikan h1.
    SELECT GET_JSON_OBJECT('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[1]');

    Contoh 3: Mengekstrak informasi dari data JSON dengan titik (.) dalam kunci

    -- Siapkan data uji.
    CREATE TABLE json_test (id STRING, json STRING);
    
    -- Masukkan data di mana kuncinya berisi titik (.).
    INSERT INTO TABLE json_test (id, json) VALUES 
    ("1", 
      "{
        \"China.beijing\":
          {\"school\":
            {\"id\":0,\"book\":
              [{\"title\": \"A\",\"price\": 8.95},
               {\"title\": \"B\",\"price\": 10.2}]
            }
          }
      }"
    );
    
    -- Masukkan data di mana kuncinya tidak berisi titik (.).
    INSERT INTO TABLE json_test (id, json) VALUES 
    ("2", 
      "{
        \"China_beijing\":
          {\"school\":
            {\"id\":0,\"book\":
              [{\"title\": \"A\",\"price\": 8.95},
               {\"title\": \"B\",\"price\": 10.2}]
            }
          }
      }"
    );
    
    -- Gunakan tanda kurung siku [''] untuk mengurai data yang berisi titik (.).
    -- Ini mengekstrak nilai 'id' di bawah 'China.beijing'. Nilai kembali adalah 0.
    SELECT GET_JSON_OBJECT(json, "$['China.beijing'].school['id']") FROM json_test WHERE id =1;
    
    -- Untuk data tanpa karakter khusus, baik '.' maupun [''] valid dan setara.
    -- Ini mengekstrak nilai 'id' di bawah 'China_beijing'. Nilai kembali adalah 0.
    SELECT GET_JSON_OBJECT(json, "$['China_beijing'].school['id']") FROM json_test WHERE id =2;
    SELECT GET_JSON_OBJECT(json, "$.China_beijing.school['id']") FROM json_test WHERE id =2;

    Contoh 4: Gunakan [''] untuk kunci yang berisi titik (.)

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

    Contoh 5: Input JSON kosong atau tidak valid

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

    Contoh 6: String JSON yang di-escape

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

    Contoh 7: Dukungan emoji

    -- Mengembalikan simbol emoji.
    SELECT GET_JSON_OBJECT('{"a":"<Emoji symbol>"}', '$.a');
    Catatan: DataWorks tidak mendukung memasukkan karakter emoji secara langsung. Anda dapat menggunakan tool seperti Data Integration untuk menulis string yang di-encode yang sesuai dengan karakter emoji ke MaxCompute. Kemudian, Anda dapat menggunakan fungsi GET_JSON_OBJECT untuk memprosesnya.

INITCAP

  • Sintaksis

    string initcap(<str>)
  • Deskripsi

    Mengonversi str menjadi title case di mana kata-kata dipisahkan oleh 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, secara implisit dikonversi ke STRING. Tipe lain mengembalikan kesalahan.

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

    • start_position: opsional. Nilai bertipe BIGINT. Kesalahan 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, di mana karakter terakhir berada di posisi -1, karakter kedua dari belakang 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, kesalahan 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 adalah NULL, mengembalikan NULL.

  • Contoh

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

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

      -- 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 sampel:

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

      -- 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 character set 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 character set apa pun.

    • from_encoding, to_encoding: wajib. Tipe STRING. Character set 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 adalah 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 dengan 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 adalah NULL, mengembalikan NULL.

    • Jika str atau key adalah 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 sampel:

      -- 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 sampel:

      -- 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 adalah NULL, mengembalikan NULL.

    • Jika str atau key adalah 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 adalah 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, secara implisit dikonversi ke STRING.

  • Nilai kembali

    Mengembalikan tipe BIGINT. Nilai kembali mengikuti aturan berikut:

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

    • Jika str adalah NULL, mengembalikan NULL.

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

  • Contoh

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

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

      -- 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, secara implisit dikonversi ke STRING.

  • Nilai kembali

    Mengembalikan tipe BIGINT. Nilai kembali mengikuti aturan berikut:

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

    • Jika str adalah NULL, mengembalikan NULL.

  • Contoh

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

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

      -- 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 adalah NULL, mengembalikan NULL.

    • Jika start_pos adalah NULL, mengembalikan 0.

  • Contoh

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

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

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

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

LPAD

  • Sintaksis

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

    Menambahkan padding ke kiri string str1 hingga length karakter menggunakan string str2. Fungsi ini merupakan ekstensi dalam MaxCompute V2.0.

  • Parameter

    • str1: wajib. Tipe STRING. String yang akan ditambahkan padding di 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 length paling kiri dari str1.

    • Jika length adalah 0, mengembalikan string kosong.

    • Jika tidak ada parameter input atau salah satu parameter input adalah NULL, mengembalikan NULL.

  • Contoh

    • Contoh 1: Gunakan string 12 untuk menambahkan padding ke kiri string abcdefgh hingga 10 karakter. Perintah sampel adalah sebagai berikut.

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

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

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

      -- 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 di awal.

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

  • Parameter

    • str: wajib. Tipe STRING. String yang akan dipangkas. Jika input bertipe BIGINT, DECIMAL, DOUBLE, atau DATETIME, secara implisit dikonversi 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 kesalahan.

    • Jika str atau trimChars adalah NULL, mengembalikan NULL.

  • Contoh

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

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

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

      -- 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, secara implisit dikonversi ke STRING.

  • Nilai kembali

    Mengembalikan tipe STRING. Nilai kembali mengikuti aturan berikut:

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

    • Jika str adalah NULL, mengembalikan NULL.

  • Contoh

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

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

      -- 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 kesalahan.

    • 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 nilai kembali

    Mengembalikan tipe STRING. Nilai kembali mengikuti aturan berikut:

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

    • Jika part tidak valid, mengembalikan kesalahan.

  • 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 secara simultan dengan kinerja lebih baik.

  • Parameter

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

    • 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 otentikasi pengguna (username, password).

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

      • USERINFO: Info otentikasi pengguna.

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

      Tidak case-sensitive. Nilai tidak valid mengembalikan kesalahan.

  • Deskripsi Nilai Kembali

    Mengembalikan tipe STRING. Jika url atau key adalah NULL, mengembalikan kesalahan.

  • Contoh

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

    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 sesuai dengan pattern yang ditentukan.

  • Parameter

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

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

    • 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, kesalahan 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 adalah NULL, mengembalikan NULL.

  • Contoh

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

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

      -- 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 sampel:

      -- 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 akan 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, kesalahan dikembalikan.

    • groupid bukan bertipe BIGINT atau kurang dari 0, kesalahan 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 adalah NULL, mengembalikan NULL.

REGEXP_EXTRACT_ALL

  • Sintaksis

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

    Menemukan semua substring yang sesuai 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 akan dicocokkan. Ini dapat 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 group_id pertama.

      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 group_id kedua 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 sesuai dengan pattern dalam source, dimulai dari start_position.

  • Parameter

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

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

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

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

    • return_option: Opsional. Posisi yang akan 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, kesalahan 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, kesalahan dikembalikan.

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

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

  • Contoh

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

      -- 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 sesuai dengan o[[:alpha:]]{1} dalam string i love www.taobao.com. Pencarian dimulai dari karakter ke-tiga. Pernyataan sampel:

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

      -- 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 sesuai 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 akan dicocokkan. Untuk informasi lebih lanjut tentang aturan ekspresi reguler, lihat Pencocokan string RLIKE. Jika pattern kosong, kesalahan dikembalikan.

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

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

      • replace_string dapat berisi referensi balik dalam format \n untuk memasukkan substring yang sesuai dengan grup penangkapan ke-n dalam pattern. Nilai n dapat berupa bilangan bulat dari 1 hingga 9. \0 memasukkan seluruh substring yang sesuai dengan pattern. Anda harus meng-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 sesuai dengan pola yang ditentukan pada kemunculan ke-n yang ditentukan oleh occurrence diganti dengan replace_string. Jika parameter ini diatur ke 0, semua substring yang sesuai dengan pola yang ditentukan diganti. Jika bertipe data lain atau kurang dari 0, kesalahan 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 adalah NULL dan ditemukan kecocokan untuk pattern, NULL dikembalikan.

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

    • Jika source, pattern, atau occurrence adalah 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 sampel:

      -- 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 sesuai dengan pola dalam string abcd berdasarkan aturan yang ditentukan. Pernyataan sampel:

      -- 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 sampel:

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

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

      -- Pola hanya mendefinisikan satu grup; referensi grup kedua tidak ada.
      -- Hindari penggunaan ini; hasilnya tidak terdefinisi.
      regexp_replace("abcd", "(.)", "\\2", 0) = "" atau "abcd"
      -- Pola tidak memiliki grup; \1 mereferensikan grup yang tidak ada.
      -- Hindari penggunaan ini; hasilnya tidak terdefinisi.
      regexp_replace("abcd", "a", "\\1", 0) = "bcd" atau "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 sesuai dengan pattern untuk kemunculan ke-occurrence.

  • Parameter

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

    • pattern: Wajib. Konstanta STRING atau ekspresi reguler. Pola yang akan 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 kesalahan.

    • Jika tidak ditemukan kecocokan, mengembalikan NULL.

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

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

  • Contoh

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

      -- 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 adalah NULL. Pernyataan sampel:

      -- 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, secara implisit dikonversi 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, kesalahan dikembalikan.

    • Jika n kosong, kesalahan dikembalikan.

    • Jika str atau n adalah NULL, NULL dikembalikan.

  • Contoh

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

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

      -- 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 salah satu parameter input adalah NULL, NULL dikembalikan.

  • Contoh

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

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

      -- 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 adalah nilai BIGINT, DOUBLE, DECIMAL, atau DATETIME, secara implisit dikonversi ke tipe STRING.

  • Nilai kembali

    Mengembalikan nilai bertipe STRING. Aturan berikut berlaku:

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

    • Jika str adalah NULL, NULL dikembalikan.

  • Contoh

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

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

      -- Mengembalikan NULL.
      select reverse(null);

RPAD

  • Sintaksis

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

    Menambahkan padding ke kanan string str1 hingga length karakter menggunakan string padding str2. Fungsi ini merupakan ekstensi dalam MaxCompute V2.0.

  • Parameter

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

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

    • 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 length paling kiri dari str1.

    • Jika length adalah 0, mengembalikan string kosong.

    • Jika tidak ada parameter input atau salah satu parameter input adalah NULL, mengembalikan NULL.

  • Contoh

    • Contoh 1: Tambahkan padding ke kanan string abcdefgh hingga 10 karakter menggunakan string padding 12. Pernyataan sampel:

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

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

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

      -- 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 koleksi. Substring terpanjang dari ujung kanan str yang seluruhnya terdiri dari karakter dari koleksi trimChars dihapus.

  • Parameter

    • str: wajib. Tipe STRING. String yang akan dipangkas. Jika input bertipe BIGINT, DECIMAL, DOUBLE, atau DATETIME, secara implisit dikonversi 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 kesalahan.

    • Jika str atau trimChars adalah NULL, mengembalikan NULL.

  • Contoh

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

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

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

      -- 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 dalam MaxCompute V2.0.

  • Nilai kembali

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

  • Contoh

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

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

      -- Mengembalikan NULL.
      select soundex(null);

SPACE

  • Sintaksis

    string space(bigint <n>)
  • Deskripsi

    Menghasilkan string yang terdiri dari 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, kesalahan dikembalikan.

    • Jika n adalah 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 STRING.

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

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

  • Nilai kembali

    Mengembalikan nilai bertipe ARRAY<STRING>.

  • Contoh

    • Contoh 1: Pisahkan string menggunakan koma.

      -- Mengembalikan ["a","b","c"].
      SELECT SPLIT('a,b,c', ',');
    • Contoh 2: Tangani kasus di mana pemisah tidak ada.

      -- Mengembalikan ["a,b,c"].
      SELECT SPLIT('a,b,c', ':');
    • Contoh 3: Tangani pemisah berturut-turut. Hal ini membuat elemen string kosong.

      -- Mengembalikan ["a","","b"].
      SELECT SPLIT('a,,b', ',');
    • Contoh 4: Gunakan pemisah multi-karakter.

      -- Mengembalikan ["a","b","c"].
      SELECT SPLIT('a::b::c', '::');
    • Contoh 5: Simpan string kosong di akhir.

      -- Secara default, string kosong di akhir tidak dikembalikan.
      -- Mengembalikan ["a","b","c"].
      SELECT SPLIT('a,b,c,,', ',');
      
      -- Kembalikan string kosong di akhir.
      -- Mengembalikan ["a","b","c","",""].
      SELECT SPLIT('a,b,c,,', ',', false);
    • Contoh 6: Gunakan karakter escape atau karakter khusus sebagai pemisah.

      -- Pisahkan dengan line feed.
      -- Mengembalikan ["hello","world"].
      SELECT SPLIT('hello\nworld', '\n');  
      
      -- Pisahkan dengan tab.
      -- Mengembalikan ["a","b","c"].
      SELECT SPLIT('a\tb\tc', '\t');  
      
      -- Pisahkan dengan carriage return.
      -- Mengembalikan ["line1","line2"].
      SELECT SPLIT('line1\rline2', '\r');  
      
      -- Escape backslash.
      -- Mengembalikan ["a","b","c"].
      SELECT SPLIT('a\\b\\c', '\\\\');  
    • Contoh 7: Tangani input NULL.

      -- Jika salah satu parameter adalah NULL, fungsi mengembalikan NULL.
      -- Mengembalikan NULL.
      SELECT SPLIT(NULL, ',');
      
      -- Mengembalikan NULL.
      SELECT SPLIT('a,b,c', NULL);
      
      -- Mengembalikan NULL.
      SELECT SPLIT('a,b,c', ',', NULL);

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, secara implisit dikonversi 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, kesalahan dikembalikan.

    • Jika separator bukan konstanta STRING, kesalahan dikembalikan.

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

    • Jika salah satu parameter kecuali separator adalah NULL, NULL dikembalikan.

  • Contoh

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

      -- 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 sampel:

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

      -- 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 sampel:

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

      -- Mengembalikan b,c,d.
      select split_part('a,b,c,d', ',', 2, 6);
    • Contoh 6: Salah satu parameter input kecuali separator adalah NULL. Pernyataan sampel:

      -- 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 yang dimulai dari start_position dengan panjang length.

  • Parameter

    • str: wajib. Tipe STRING. Jika input bertipe BIGINT, DECIMAL, DOUBLE, atau DATETIME,secara implisit dikonversi 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 kesalahan.

  • Nilai kembali

    Mengembalikan tipe STRING. Nilai kembali mengikuti aturan berikut:

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

    • Jika length bukan bertipe BIGINT atau ≤0, mengembalikan kesalahan.

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

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

  • Contoh

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

      -- 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 adalah NULL. Pernyataan sampel:

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

SUBSTRING

  • Sintaksis

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

    Mengembalikan substring dari str yang dimulai 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 merujuk pada karakter terakhir, dan penghitungan dilanjutkan 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, kesalahan dikembalikan.

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

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

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

  • Contoh

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

      -- 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 adalah NULL. Pernyataan sampel:

      -- 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. Tipe STRING. Ini adalah string tempat ekstraksi dilakukan.

    • separator: wajib. Delimiter bertipe STRING.

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

  • Nilai kembali

    Fungsi mengembalikan nilai bertipe STRING. Jika salah satu parameter input adalah NULL, fungsi mengembalikan NULL.

  • Contoh

    • Contoh 1: Ekstrak dari string https://www.alibabacloud.com. Pernyataan sampel:

      -- 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 adalah NULL. Pernyataan sampel:

      -- 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 kesalahan.

    • Jika value adalah NULL, fungsi mengembalikan NULL.

  • Contoh

    • Contoh 1: Konversi nilai ke representasi STRING. Pernyataan sampel:

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

      -- 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 diubah menjadi huruf kecil saat Anda mengonversi ekspresi menjadi string JSON.

    • Jika value adalah null, pasangan kunci-nilai tempat value tersebut berada tidak disertakan dalam string JSON yang dikembalikan. Misalnya, jika value2 adalah 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 sampel:

      -- 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 sampel:

      -- Nilai kembali adalah {"a":"B"}. Jika ekspresi bertipe STRUCT dikonversi menjadi string JSON, semua kunci diubah 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 adalah nilai BIGINT, DOUBLE, DECIMAL, atau DATETIME, secara implisit dikonversi 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, kesalahan dikembalikan.

    • Jika source adalah NULL, NULL dikembalikan.

  • Contoh

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

      -- Mengembalikan abcd.
      select tolower('aBcd');
    • Contoh 2: Parameter input adalah NULL. Pernyataan sampel:

      -- 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, secara implisit dikonversi 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, kesalahan dikembalikan.

    • Jika source adalah NULL, NULL dikembalikan.

  • Contoh

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

      -- Mengembalikan ABCD.
      select toupper('aBcd');
    • Contoh 2: Parameter input adalah NULL. Pernyataan sampel:

      -- 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 dalam MaxCompute V2.0.

  • Nilai kembali

    Mengembalikan STRING. Jika salah satu parameter input adalah NULL, fungsi mengembalikan NULL.

  • Contoh

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

      -- 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 sampel:

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

      -- 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 dari 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, secara implisit dikonversi 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 kesalahan.

    • Jika str atau trimChars adalah NULL, mengembalikan NULL.

  • Contoh

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

      -- 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. Setiap 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 adalah NULL. Pernyataan sampel:

      -- 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 adalah 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 adalah 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 user-defined function (UDF). Untuk informasi lebih lanjut, lihat Ikhtisar.