全部产品
Search
文档中心

MaxCompute:Fungsi string

更新时间:Dec 18, 2025

Jika Anda ingin melakukan operasi pada string yang disimpan dalam tabel—seperti memotong, menggabungkan, mengonversi, membandingkan, dan mencari string—Anda dapat menggunakan fungsi string yang didukung oleh MaxCompute SQL. Topik ini menjelaskan sintaks, parameter, serta contoh penggunaan fungsi string yang didukung oleh MaxCompute SQL.

Tabel berikut menjelaskan fungsi string yang didukung oleh MaxCompute SQL.

Function

Description

ASCII

Mengembalikan kode ASCII karakter pertama dalam string yang ditentukan.

CHAR_MATCHCOUNT

Menghitung jumlah karakter dari String A yang muncul di String B.

CHR

Mengonversi kode ASCII menjadi karakter.

CONCAT

Menggabungkan semua string yang ditentukan dan mengembalikan string akhir.

CONCAT_WS

Menggabungkan semua string input dalam array menggunakan delimiter yang ditentukan.

DECODE

Mendekode string dalam format encoding yang ditentukan.

ENCODE

Mengencode string dalam format encoding yang ditentukan.

FIND_IN_SET

Mengembalikan posisi string yang ditentukan di antara beberapa 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 terenkripsi UTF-8.

FROM_JSON

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

GET_JSON_OBJECT

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

INITCAP

Mengonversi string menjadi string dalam format yang ditentukan. Dalam format ini, kata-kata menggunakan title case dan dipisahkan spasi. Dalam title case, huruf pertama setiap kata dikapitalisasi, sedangkan huruf lainnya dalam setiap kata menggunakan huruf kecil.

INSTR

Mengembalikan posisi String A dalam String B.

IS_ENCODING

Menentukan apakah string dapat dikonversi dari satu set karakter ke set karakter lainnya.

JSON_TUPLE

Mengekstrak string dari string JSON standar berdasarkan serangkaian kunci input.

KEYVALUE

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

KEYVALUE_TUPLE

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

LENGTH

Menghitung panjang string.

LENGTHB

Menghitung panjang string dalam byte.

LOCATE

Mengembalikan posisi string yang ditentukan dalam string lainnya.

LPAD

Menambahkan padding ke kiri string hingga mencapai panjang yang ditentukan.

LTRIM

Menghapus karakter dari sisi kiri string.

MASK_HASH

Mengembalikan nilai hash berdasarkan ekspresi string.

MD5

Mengembalikan nilai MD5 dari string.

PARSE_URL

Mengurai URL dan mengembalikan bagian tertentu dari URL tersebut.

PARSE_URL_TUPLE

Mengurai URL dan mengembalikan beberapa bagian dari URL tersebut.

REGEXP_COUNT

Mengembalikan jumlah substring yang cocok dengan pola yang ditentukan dari posisi yang ditentukan.

REGEXP_EXTRACT

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

REGEXP_EXTRACT_ALL

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

REGEXP_INSTR

Mengembalikan posisi awal atau akhir substring yang dimulai dari posisi yang ditentukan dan cocok dengan pola yang ditentukan sebanyak jumlah kali tertentu.

REGEXP_REPLACE

Menggunakan string untuk menggantikan substring dari string lain jika substring tersebut cocok dengan pola yang ditentukan sebanyak jumlah kali tertentu.

REGEXP_SUBSTR

Mengembalikan substring dalam string yang cocok dengan pola yang ditentukan sebanyak jumlah kali tertentu dari posisi yang ditentukan.

REPEAT

Mengembalikan string yang mengulang string yang ditentukan sebanyak jumlah kali tertentu.

REPLACE

Menggantikan substring dalam String A yang cocok dengan String B dengan substring lainnya.

REVERSE

Mengembalikan karakter string dalam urutan terbalik.

RPAD

Menambahkan padding ke kanan string hingga mencapai panjang yang ditentukan.

RTRIM

Menghapus karakter dari sisi kanan string.

SOUNDEX

Mengonversi string menjadi string tipe SOUNDEX.

SPACE

Menghasilkan string spasi.

SPLIT

Mengembalikan array setelah string dipisahkan dengan delimiter.

SPLIT_PART

Menggunakan delimiter untuk memisahkan string menjadi substring dan mengembalikan substring dari bagian tertentu dari string tersebut.

SUBSTR

Mengembalikan substring dengan panjang tertentu dari posisi tertentu dalam string. String bertipe STRING.

SUBSTRING

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

SUBSTRING_INDEX

Memotong string dari delimiter yang ditentukan.

TO_CHAR

Mengonversi data tipe BOOLEAN, BIGINT, DECIMAL, atau DOUBLE menjadi tipe STRING.

TO_JSON

Mengonversi data tipe data kompleks menjadi string JSON.

TOLOWER

Mengonversi huruf kapital dalam string menjadi huruf kecil.

TOUPPER

Mengonversi huruf kecil dalam string menjadi huruf kapital.

TRANSLATE

Menggantikan bagian String A yang muncul di String B dengan String C.

TRIM

Menghapus karakter dari kedua sisi kiri dan kanan string.

URL_DECODE

Mengonversi string input yang dalam format application/x-www-form-urlencoded MIME menjadi string standar.

URL_ENCODE

Mengencode string input dalam format application/x-www-form-urlencoded MIME dan mengembalikan string yang telah diencode.

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 mengeksekusi pernyataan SET untuk mengaktifkan edisi tersebut. Tipe data baru tersebut meliputi TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP, dan BINARY.

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

  • Tingkat proyek: Pemilik proyek dapat mengaktifkan edisi tipe data MaxCompute V2.0 untuk seluruh proyek sesuai kebutuhan. Konfigurasi akan berlaku setelah 10 hingga 15 menit. Untuk mengaktifkannya di 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 di tingkat proyek, lihat Edisi Tipe Data.

Batasan

Fungsi-fungsi berikut hanya mendukung karakter Inggris:

  • TRIM, RTRIM, dan LTRIM: Nilai parameter trimChars hanya boleh berisi karakter Inggris.

  • REVERSE: Fungsi ini hanya mendukung karakter Inggris dalam edisi tipe data yang kompatibel dengan Hive.

  • SOUNDEX: Fungsi ini hanya mendukung karakter Inggris.

  • TOLOWER: Fungsi ini digunakan untuk mengonversi karakter Inggris dalam string menjadi huruf kecil.

  • TOUPPER: Fungsi ini digunakan untuk mengonversi karakter Inggris dalam string menjadi huruf kapital.

  • INITCAP: Fungsi ini digunakan untuk mengonversi huruf pertama setiap kata dalam bahasa Inggris dalam string menjadi huruf kapital dan huruf lainnya dalam setiap kata menjadi huruf kecil.

ASCII

  • Sintaks

    bigint ascii(string <str>)
  • Deskripsi

    Mengembalikan kode ASCII karakter pertama dalam string yang ditentukan oleh str.

  • Parameter

    str: wajib. Nilai tipe STRING. Jika nilai input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, nilai tersebut secara implisit dikonversi menjadi nilai tipe STRING sebelum perhitungan.

  • Nilai kembali

    Nilai tipe BIGINT dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:

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

    • Jika nilai str null, null dikembalikan.

  • Contoh

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

      -- Nilai kembali adalah 97.
      select ascii('abcde'); 
    • Contoh 2: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select ascii(null);

CHAR_MATCHCOUNT

  • Sintaks

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

    Mengembalikan jumlah karakter yang termasuk dalam str1 dan muncul di str2.

  • Parameter

    str1 dan str2: wajib. Nilai tipe STRING. Nilainya harus berupa string UTF-8 yang valid. Jika ditemukan karakter tidak valid (karakter yang tidak di-encode Unicode) selama perbandingan dua string tersebut, fungsi ini mengembalikan nilai negatif.

  • Nilai kembali

    Nilai tipe BIGINT dikembalikan. Jika nilai str1 atau str2 null, null dikembalikan.

  • Contoh

    • Contoh 1: Hitung jumlah karakter yang termasuk dalam string aabc dan muncul di string abcde. Pernyataan contoh:

      -- Nilai kembali adalah 4.
      select char_matchcount('aabc','abcde');
    • Contoh 2: Parameter input diatur ke null. Pernyataan contoh:

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

CHR

  • Sintaks

    string chr(bigint <ascii>)
  • Deskripsi

    Mengonversi kode ASCII yang ditentukan menjadi karakter.

  • Parameter

    ascii: wajib. Nilai tipe BIGINT. Nilai ini menentukan kode ASCII. Rentang nilai yang valid: 0 hingga 127. Jika nilai input bertipe STRING, DOUBLE, atau DECIMAL, nilai tersebut secara implisit dikonversi menjadi nilai tipe BIGINT sebelum perhitungan.

  • Nilai kembali

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

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

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

    • Jika nilai ascii null, null dikembalikan.

  • Contoh

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

      -- Nilai kembali adalah d.
      select chr(100);
    • Contoh 2: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select chr(null);
    • Contoh 3: Nilai input adalah karakter bertipe STRING. Pernyataan contoh:

      -- Nilai input secara implisit dikonversi menjadi nilai tipe BIGINT sebelum perhitungan. Nilai kembali adalah d.
      select chr('100');

CONCAT

  • Sintaks

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

    • Array sebagai input: Menggabungkan semua elemen 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 dilibatkan dalam operasi.

    • str1 dan str2: wajib. Nilai tipe STRING. Jika nilai input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, nilai tersebut secara implisit dikonversi menjadi nilai tipe STRING sebelum perhitungan. Jika nilai input bertipe data lainnya, kesalahan dikembalikan.

  • Nilai kembali

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

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

  • Contoh

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

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

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

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

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

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

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

CONCAT_WS

  • Sintaks

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

    Menggabungkan semua string dalam parameter atau elemen dalam array menggunakan delimiter yang ditentukan dan mengembalikan hasilnya. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.

  • Parameter

    • separator: wajib. Delimiter bertipe STRING.

    • str1 dan str2: Minimal dua string harus ditentukan. Nilai tipe STRING. Jika nilai input bertipe BIGINT, DECIMAL, DOUBLE, atau DATETIME, nilai tersebut secara implisit dikonversi menjadi nilai tipe STRING sebelum perhitungan.

    • a: wajib. Parameter ini menentukan array. Elemen dalam array bertipe STRING.

  • Nilai kembali

    Nilai tipe STRING atau STRUCT dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika nilai str1 atau str2 bukan bertipe STRING, BIGINT, DECIMAL, DOUBLE, atau DATETIME, kesalahan dikembalikan.

    • Jika tidak ada parameter input yang tersedia atau parameter input diatur ke null, null dikembalikan.

  • Contoh

    • Contoh 1: Gabungkan string name dan hanmeimei menggunakan titik dua (:). Pernyataan contoh:

      -- Nilai kembali adalah name:hanmeimei.
      select concat_ws(':','name','hanmeimei');

      -

    • Contoh 2: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select concat_ws(':','avg',null,'34');
    • Contoh 3: Gabungkan elemen dalam array array('name', 'hanmeimei') menggunakan titik dua (:). Pernyataan contoh:

      -- Nilai kembali adalah name:hanmeimei.
      select concat_ws(':',array('name', 'hanmeimei'));

DECODE

  • Sintaks

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

    Mendekode string str berdasarkan format yang ditentukan oleh charset.

  • Parameter

    Parameter

    Required

    Description

    str

    Yes

    String yang ingin Anda dekode. String bertipe BINARY.

    charset

    Yes

    Format encoding. Nilainya bertipe STRING. Nilai yang valid: UTF-8, UTF-16, UTF-16LE, UTF-16BE, ISO-8859-1, dan US-ASCII.

    Catatan

    Format encoding ISO-8859-1 dan US-ASCII hanya dapat digunakan untuk mengencode atau mendekode karakter Inggris.

  • Nilai kembali

    Nilai tipe STRING dikembalikan. Jika nilai str atau charset NULL, nilai kembali adalah NULL.

  • Contoh

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

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

      Hasil berikut dikembalikan:

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

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

      Hasil berikut dikembalikan:

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

ENCODE

  • Sintaks

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

    Mengencode string str dalam format yang ditentukan oleh charset.

  • Parameter

    • str: wajib. Nilai tipe STRING. Parameter ini menentukan string yang ingin Anda encode.

    • charset: wajib. Nilai tipe STRING. Parameter ini menentukan format encoding. Nilai yang valid: UTF-8, UTF-16, UTF-16LE, UTF-16BE, ISO-8859-1, dan US-ASCII.

  • Nilai kembali

    Nilai tipe BINARY dikembalikan. Jika nilai str atau charset null, null dikembalikan.

  • Contoh

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

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

      -- Nilai kembali adalah =00a=00b=00c.
      select encode("abc", "UTF-16BE");
    • Contoh 3: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select encode("abc", null);

FIND_IN_SET

  • Sintaks

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

    Mengembalikan posisi substring str1 dalam string str2. Substring dalam string str2 dipisahkan oleh delimiter. Posisi pertama adalah 1.

  • Parameter

    Parameter

    Required

    Description

    str1

    Yes

    Nilai tipe STRING. Parameter ini menentukan substring yang ingin Anda cari.

    str2

    Yes

    Nilai tipe STRING. Parameter ini menentukan string tempat substring dipisahkan oleh delimiter.

    delimiter

    No

    Nilai tipe STRING. Delimiter default adalah koma (,). Delimiter dapat berupa satu karakter atau string.

  • Nilai kembali

    Nilai tipe BIGINT dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:

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

    • Jika nilai str1 atau str2 adalah NULL, NULL dikembalikan.

  • Contoh

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

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

      Hasil berikut dikembalikan:

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

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

      Hasil berikut dikembalikan:

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

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

      Hasil berikut dikembalikan:

      +------------+
      | pos        |
      +------------+
      | 3          |
      +------------+
    • Contoh 4: Parameter input diatur ke null. Pernyataan contoh:

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

      Hasil berikut dikembalikan:

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

FORMAT_NUMBER

  • Sintaks

    string format_number(float|double|decimal <expr1>, int <expr2>)
  • Deskripsi

    Mengonversi nilai expr1 menjadi string yang memenuhi format yang ditentukan oleh expr2.

  • Parameter

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

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

  • Nilai kembali

    Nilai tipe 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 berisi 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: Kembalikan nilai dalam format yang ditentukan berdasarkan angka yang diberikan. Pernyataan contoh:

      -- Nilai kembali adalah 5.230.
      select format_number(5.230134523424545456,3);
      -- Nilai kembali adalah 12,332.123.
      select format_number(12332.123456, '#,###,###,###.###');
    • Contoh 2: Parameter input kosong atau diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select format_number('',3);
      -- Nilai kembali adalah null.
      select format_number(null,3);

FROM_CHARSET

  • Sintaks

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

    Mengonversi data biner terenkode non-UTF-8 ke string terenkode UTF-8 untuk perhitungan selanjutnya.

  • Parameter

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

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

    • mode: opsional. Nilai tipe 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 yang 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

    Nilai tipe STRING dalam format encoding UTF-8 dikembalikan. Jika parameter input null atau string kosong, nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika parameter input null, null dikembalikan.

    • Jika parameter input string kosong, kesalahan dikembalikan.

  • Contoh

    • Contoh 1: Konversi data biner terenkripsi UTF-8 menjadi string terenkripsi UTF-8.

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

      Hasil berikut dikembalikan:

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

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

      Hasil berikut dikembalikan:

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

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

      Hasil berikut dikembalikan:

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

FROM_JSON

  • Sintaks

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

    Mengembalikan data tipe 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 dalam pernyataan pembuatan tabel, seperti array<bigint>, map<string, array<string>>, atau struct<a:int, b:double, `C`:map<string,string>>.

      Catatan

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

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

      Tipe data JSON

      Tipe data MaxCompute

      OBJECT

      STRUCT, MAP, dan STRING

      ARRAY

      ARRAY dan STRING

      NUMBER

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

      BOOLEAN

      BOOLEAN dan STRING

      STRING

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

      NULL

      Semua tipe

      Catatan

      String JSON tipe 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 tipe NUMBER menjadi nilai tipe FLOAT, DOUBLE, atau DECIMAL, presisi nilai tersebut tidak dapat dijamin. Kami menyarankan Anda mengonversi string JSON menjadi nilai tipe STRING terlebih dahulu, lalu mengonversi nilai yang diperoleh menjadi nilai tipe FLOAT, DOUBLE, atau DECIMAL.

  • Nilai kembali

    Nilai tipe ARRAY, MAP, atau STRUCT dikembalikan.

  • Contoh

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

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

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

GET_JSON_OBJECT

Catatan Penggunaan

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

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

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

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

  • Fungsi GET_JSON_OBJECT tidak mendukung sintaks ekspresi JSONPath.

Parameter input tipe data JSON

  • Sintaks

    STRING GET_JSON_OBJECT(JSON <json>, STRING <json_path>)
  • Deskripsi

    Mengekstrak satu string dari string JSON standar berdasarkan JSON PATH.

  • Parameter

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

    • json_path: wajib. Parameter ini menentukan path JSON tempat nilai JSON tertentu diperiksa.

  • Nilai kembali

    Nilai kembali bertipe STRING.

  • Contoh

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

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

      Hasil berikut dikembalikan:

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

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

      Hasil berikut dikembalikan:

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

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

      Hasil berikut dikembalikan:

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

Parameter input tipe data STRING

  • Sintaks

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

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

  • Parameter

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

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

      • $: menunjukkan node root.

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

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

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

  • Batasan

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

  • Nilai kembali

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

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

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

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

        Kami menyarankan Anda menggunakan konfigurasi ini karena menghasilkan perilaku pengembalian fungsi yang lebih standar. Hal ini memudahkan pemrosesan data dan meningkatkan kinerja pemrosesan data. Jika terdapat job yang menggunakan fungsi ini untuk meng-escape karakter tereservasi JSON dalam proyek MaxCompute, kami menyarankan Anda mempertahankan operasi escape asli untuk mencegah kesalahan akibat kurangnya verifikasi. Fungsi ini mematuhi aturan berikut saat mengembalikan nilai:

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Contoh

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

      -- String JSON src_json.json berisi konten berikut:
      +----+
      json
      +----+
      {"store":
      {"fruit":[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}],
      "bicycle":{"price":19.95,"color":"red"}
      },
      "email":"amy@only_for_json_udf_test.net",
      "owner":"amy"
      }
      -- Ekstrak informasi bidang owner dan kembalikan amy.
      select get_json_object(src_json.json, '$.owner') from src_json;
      -- Ekstrak informasi array pertama dalam bidang store.fruit dan kembalikan {"weight":8,"type":"apple"}.
      select get_json_object(src_json.json, '$.store.fruit[0]') from src_json;
      -- Ekstrak informasi bidang yang tidak ada dan kembalikan null.
      select get_json_object(src_json.json, '$.non_exist_key') from src_json;
    • Contoh 2: Ekstrak informasi dari objek JSON tipe ARRAY. Pernyataan contoh:

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

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

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

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

INITCAP

  • Sintaks

    string initcap(<str>)
  • Deskripsi

    Mengonversi string yang ditentukan oleh str menjadi string dalam format title case, yaitu huruf pertama setiap kata dikapitalisasi dan huruf lainnya dalam setiap kata menggunakan huruf kecil. Kata-kata dipisahkan oleh spasi.

  • Parameter

    str: wajib. Nilai tipe STRING. Parameter ini menentukan string yang ingin Anda konversi.

  • Nilai kembali

    String dikembalikan dalam format title case, yaitu huruf pertama setiap kata dikapitalisasi dan huruf lainnya dalam setiap kata menggunakan huruf kecil.

  • Contoh

    -- Nilai kembali adalah Odps Sql.
    SELECT initcap("oDps sql");

INSTR

  • Sintaks

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

    Mengembalikan posisi substring str2 dalam string str1.

  • Parameter

    • str1: wajib. Nilai tipe STRING. Parameter ini menentukan string yang berisi substring yang ingin Anda cari. Jika nilai input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, nilai tersebut secara implisit dikonversi menjadi nilai tipe STRING sebelum perhitungan. Jika nilai input bertipe data lainnya, kesalahan dikembalikan.

    • str2: wajib. Nilai tipe STRING. Parameter ini menentukan substring yang ingin Anda cari. Jika nilai input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, nilai tersebut secara implisit dikonversi menjadi nilai tipe STRING sebelum perhitungan. Jika nilai input bertipe data lainnya, kesalahan dikembalikan.

    • start_position: opsional. Nilai tipe BIGINT. Jika nilai input bertipe data lainnya, kesalahan dikembalikan. Parameter ini menentukan posisi karakter dalam str1 tempat pencarian dimulai. Posisi awal default adalah karakter pertama, ditandai sebagai 1. Jika start_position bernilai negatif, pencarian dimulai dari akhir ke awal string dan karakter terakhir adalah -1.

    • nth_appearance: opsional. Nilai tipe BIGINT, yang lebih besar dari 0. Parameter ini menentukan posisi substring str2 yang muncul dalam string str1 sebanyak nth kali. Jika nilai nth_appearance bertipe data lainnya atau kurang dari atau sama dengan 0, kesalahan dikembalikan.

  • Nilai kembali

    Nilai tipe BIGINT dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika str2 tidak ditemukan dalam str1, nilai 0 dikembalikan.

    • Jika str2 adalah string kosong, pencocokan selalu berhasil. Misalnya, nilai 1 dikembalikan untuk select instr('abc','');.

    • Jika nilai str1, str2, start_position, atau nth_appearance null, null dikembalikan.

  • Contoh

    • Contoh 1: Kembalikan posisi substring e dalam string Tech on the net. Pernyataan contoh:

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

      -- Nilai kembali adalah 6.
      select instr('Tech on the net', 'on');
    • Contoh 3: Kembalikan posisi kemunculan kedua substring e dalam string Tech on the net dari karakter ketiga. Pernyataan contoh:

      -- Nilai kembali adalah 14.
      select instr('Tech on the net', 'e', 3, 2);
    • Contoh 4: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select instr('Tech on the net', null);

IS_ENCODING

  • Sintaks

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

    Menentukan apakah string input str dapat dikonversi dari set karakter yang ditentukan oleh from_encoding menjadi set karakter yang ditentukan oleh to_encoding. Fungsi ini juga dapat digunakan untuk menentukan apakah string input rusak. Dalam kebanyakan kasus, from_encoding diatur ke UTF-8 dan to_encoding diatur ke GBK.

  • Parameter

    • str: wajib. Nilai tipe STRING. String kosong dapat termasuk dalam set karakter apa pun.

    • from_encoding dan to_encoding: wajib. Nilai tipe STRING. from_encoding menentukan set karakter sumber, dan to_encoding menentukan set karakter tujuan.

  • Nilai kembali

    Nilai tipe BOOLEAN dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika str dapat dikonversi, True dikembalikan. Jika tidak, False dikembalikan.

    • Jika nilai str, from_encoding, atau to_encoding null, null dikembalikan.

JSON_TUPLE

  • Sintaks

    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 tipe STRING. Parameter ini menentukan string JSON standar.

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

  • Nilai kembali

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

  • Sintaks

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

    Memisahkan string str menjadi pasangan kunci-nilai oleh split1, memisahkan pasangan kunci-nilai oleh split2, lalu mengembalikan nilai dari key yang ditentukan.

  • Parameter

    • str: wajib. Nilai tipe STRING. Parameter ini menentukan string yang ingin Anda pisahkan.

    • split1 dan split2: opsional. Nilai tipe STRING. Parameter ini menentukan string yang digunakan sebagai delimiter untuk memisahkan string sumber. Jika Anda tidak menentukan kedua parameter tersebut, nilai default split1 adalah titik koma (;) dan nilai default split2 adalah titik dua (:). Jika pasangan kunci-nilai yang diperoleh setelah string sumber dipisahkan oleh split1 berisi beberapa delimiter yang ditentukan oleh split2, hasil yang dikembalikan tidak terdefinisi.

    • key: wajib. Nilai tipe STRING. Setelah string sumber dipisahkan oleh split1 dan split2 secara berurutan, nilai yang sesuai dengan key dikembalikan.

  • Nilai kembali

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

    • Jika nilai split1 atau split2 null, null dikembalikan.

    • Jika nilai str atau key null atau tidak ada key yang cocok, null dikembalikan.

    • Jika beberapa pasangan kunci-nilai cocok, nilai yang sesuai dengan key pertama yang cocok dikembalikan.

  • Contoh

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

      -- Nilai kembali adalah 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 string sumber dipisahkan oleh split1, pasangan kunci-nilai 0:1\,1:2 dikembalikan. Setelah pasangan kunci-nilai dipisahkan oleh split2, kunci dan nilai berikut dihasilkan:

      0 1/  
      1 2

      Nilai 2 yang sesuai dengan kunci 1 dikembalikan.

    • Contoh 2: Pisahkan string \;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\; menjadi pasangan kunci-nilai berdasarkan backslash dan titik koma (\;), pisahkan nilai dari kunci berdasarkan titik dua (:), lalu kembalikan nilai yang sesuai dengan kunci tf. Pernyataan contoh:

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

      Setelah string sumber \;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\; dipisahkan berdasarkan backslash dan titik koma (\;), pasangan kunci-nilai berikut dihasilkan:

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

      Setelah pasangan kunci-nilai dipisahkan berdasarkan titik dua (:), kunci dan nilai berikut dihasilkan:

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

      Nilai 21910 yang sesuai dengan kunci tf dikembalikan.

KEYVALUE_TUPLE

  • Sintaks

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

    Memisahkan string str menjadi pasangan kunci-nilai oleh split1, memisahkan pasangan kunci-nilai oleh split2, lalu mengembalikan nilai dari keys.

  • Parameter

    • str: wajib. Nilai tipe STRING. Parameter ini menentukan string yang ingin Anda pisahkan.

    • split1 dan split2: wajib. Nilai tipe STRING. Parameter ini menentukan string yang digunakan sebagai delimiter untuk memisahkan string sumber. Jika pasangan kunci-nilai yang diperoleh setelah string sumber dipisahkan oleh split1 berisi beberapa delimiter yang ditentukan oleh split2, hasil yang dikembalikan tidak terdefinisi.

    • key: wajib. Nilai tipe STRING. Setelah string sumber dipisahkan oleh split1 dan split2 secara berurutan, nilai yang sesuai dengan key dikembalikan.

  • Nilai kembali

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

    • Jika nilai split1 atau split2 null, null dikembalikan.

    • Jika nilai str atau key null atau tidak ada key yang cocok, null dikembalikan.

  • Contoh

    -- Buat tabel.
    create table mf_user (
    user_id string,
    user_info string
    );
    -- Masukkan data ke tabel.
    insert into mf_user values('1','age:18;genda:f;address:abc'),('2','age:20;genda:m;address:bcd');
    -- Kueri data yang Anda masukkan.
    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 klausa KEYVALUE.
    SELECT user_id,
    age,
    genda,
    address
    FROM mf_user LATERAL VIEW KEYVALUE_TUPLE(user_info,';', ':','age','genda','address') ui AS age,genda,address;

    Hasil berikut dikembalikan:

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

LENGTH

  • Sintaks

    bigint length(string <str>)
  • Deskripsi

    Mengembalikan panjang string str.

  • Parameter

    str: wajib. Nilai tipe STRING. Jika nilai input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, nilai tersebut secara implisit dikonversi menjadi nilai tipe STRING sebelum perhitungan.

  • Nilai kembali

    Nilai tipe BIGINT dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:

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

    • Jika nilai str null, null dikembalikan.

    • Jika nilai str tidak dalam format UTF-8, fungsi ini mengembalikan -1.

  • Contoh

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

      -- Nilai kembali adalah 15.
      select length('Tech on the net');
    • Contoh 2: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select length(null);

LENGTHB

  • Sintaks

    bigint lengthb(string <str>)
  • Deskripsi

    Mengembalikan panjang string yang ditentukan oleh str dalam byte.

  • Parameter

    str: wajib. Nilai tipe STRING. Jika nilai input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, nilai tersebut secara implisit dikonversi menjadi nilai tipe STRING sebelum perhitungan.

  • Nilai kembali

    Nilai tipe BIGINT dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:

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

    • Jika nilai str null, null dikembalikan.

  • Contoh

    • Contoh 1: Kembalikan panjang string Tech on the net dalam byte. Pernyataan contoh:

      -- Nilai kembali adalah 15.
      select lengthb('Tech on the net');
    • Contoh 2: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select lengthb(null);

LOCATE

  • Sintaks

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

    Mengembalikan posisi substring substr dalam string str. Anda dapat menggunakan start_pos untuk menentukan posisi tempat pencarian dimulai. Nilai dimulai dari 1.

  • Parameter

    • substr: wajib. Nilai tipe STRING. Parameter ini menentukan substring yang ingin Anda cari.

    • str: wajib. Nilai tipe STRING. Parameter ini menentukan string tempat Anda ingin mencari substring.

    • start_pos: opsional. Nilai tipe BIGINT. Parameter ini menentukan posisi tempat pencarian dimulai.

  • Nilai kembali

    Nilai tipe BIGINT dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika substr tidak dapat ditemukan dalam str, 0 dikembalikan.

    • Jika nilai str atau substr null, null dikembalikan.

    • Jika nilai start_pos null, 0 dikembalikan.

  • Contoh

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

      -- Nilai kembali adalah 1.
      select locate('ab', 'abchelloabc');
    • Contoh 2: Kembalikan posisi string hi dalam string abchelloabc. Pernyataan contoh:

      -- Nilai kembali adalah 0.
      select locate('hi', 'abc,hello,ab,c');
    • Contoh 3: Nilai start_pos diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah 0.
      select locate('ab', 'abhelloabc', null);

LPAD

  • Sintaks

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

    Menambahkan padding ke kiri str1 dengan str2 hingga mencapai panjang yang ditentukan length. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.

  • Parameter

    • str1: wajib. Nilai tipe STRING. Parameter ini menentukan string yang ingin Anda tambahkan padding ke kirinya.

    • length: wajib. Nilai tipe INT. Parameter ini menentukan jumlah karakter yang digunakan untuk padding kiri.

    • str2: wajib. Parameter ini menentukan string yang Anda gunakan untuk menambahkan padding ke kanan string lainnya.

  • Nilai kembali

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

    • Jika nilai length kurang dari jumlah karakter dalam str1, fungsi ini memotong str1 dari kiri untuk mendapatkan string dengan jumlah karakter yang ditentukan oleh length.

    • Jika length diatur ke 0, string kosong dikembalikan.

    • Jika tidak ada parameter input yang tersedia atau parameter input diatur ke null, null dikembalikan.

  • Contoh

    • Contoh 1: Tambahkan padding ke kiri string abcdefgh dengan string 12 untuk mendapatkan string dengan panjang 10 karakter. Pernyataan contoh:

      -- Nilai kembali adalah 12abcdefgh.
      select lpad('abcdefgh', 10, '12');
    • Contoh 2: Tambahkan padding ke kiri string abcdefgh dengan string 12 untuk mendapatkan string dengan panjang 5 karakter. Pernyataan contoh:

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

      -- Nilai kembali adalah string kosong.
      select lpad('abcdefgh' ,0, '12'); 
    • Contoh 4: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select lpad(null ,0, '12');

LTRIM

  • Sintaks

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

    Perhatikan hal-hal berikut:

    • Jika Anda tidak menentukan trimChars, spasi di sisi kiri dihapus secara default.

    • Jika Anda menentukan trimChars, substring yang terdiri dari satu atau beberapa karakter yang ditentukan oleh trimChars dihapus dari sisi kiri string yang ditentukan oleh str.

  • Parameter

    • str: wajib. Nilai tipe STRING. Parameter ini menentukan string tempat karakter dihapus dari sisi kiri. Jika nilai input bertipe BIGINT, DECIMAL, DOUBLE, atau DATETIME, nilai tersebut secara implisit dikonversi menjadi nilai tipe STRING sebelum perhitungan.

    • trimChars: opsional. Nilai tipe STRING. Parameter ini menentukan karakter yang akan dihapus.

  • Nilai kembali

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

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

    • Jika nilai str atau trimChars null, null dikembalikan.

  • Contoh

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

      -- Nilai kembali adalah yxTxyomxx.
      select ltrim(' yxTxyomxx ');
      -- Pernyataan di atas setara dengan pernyataan berikut:
      select trim(leading from ' yxTxyomxx ');
    • Contoh 2: Hapus substring yang terdiri dari satu atau beberapa karakter dalam koleksi xy dari sisi kiri string yxTxyomxx.

      -- Nilai kembali adalah Txyomxx. Jika x atau y muncul di sisi kiri, karakter tersebut dihapus.
      select ltrim('yxTxyomxx', 'xy');
      -- Pernyataan di atas setara dengan pernyataan berikut:
      select trim(leading 'xy' from 'yxTxyomxx');
    • Contoh 3: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select ltrim(null);
      select ltrim('yxTxyomxx', null);

MASK_HASH

  • Sintaks

    mask_hash(<expr>)
  • Deskripsi

    Mengembalikan nilai hash yang dihitung menggunakan ekspresi string yang ditentukan oleh expr. Jika nilai yang dihitung oleh ekspresi string sama, nilai hash yang konsisten dikembalikan.

  • Parameter

    expr: wajib. Ekspresi string yang digunakan untuk menghitung nilai hash. Tipe data STRING, CHAR, VARCHAR, dan BINARY didukung.

  • Nilai kembali

    Nilai hash yang dihitung menggunakan ekspresi string dikembalikan. Nilai hash memiliki panjang 64 byte. Dalam edisi tipe data yang kompatibel dengan Hive, nilai null dikembalikan jika ekspresi non-string digunakan.

  • Contoh

    -- Nilai hash dikembalikan jika string abc digunakan.
    select mask_hash("abc");
    -- Hasil berikut dikembalikan:
    +------------+
    | _c0        |
    +------------+
    | ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad |
    +------------+
    
    -- Nilai null dikembalikan jika ekspresi non-string digunakan.
    select mask_hash(100);
    -- Hasil berikut dikembalikan:
    +------------+
    | _c0        |
    +------------+
    | NULL       |
    +------------+

MD5

  • Sintaks

    string md5(string <str>)
  • Deskripsi

    Mengembalikan nilai MD5 dari string yang ditentukan oleh str.

  • Parameter

    str: wajib. Nilai tipe STRING. Jika nilai input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, nilai tersebut secara implisit dikonversi menjadi nilai tipe STRING sebelum perhitungan.

  • Nilai kembali

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

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

    • Jika nilai str null, null dikembalikan.

  • Contoh

    • Contoh 1: Kembalikan nilai MD5 dari string Tech on the net. Pernyataan contoh:

      -- Nilai kembali adalah ddc4c4796880633333d77a60fcda9af6.
      select md5('Tech on the net');
    • Contoh 2: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select md5(null);

PARSE_URL

  • Sintaks

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

    Mengurai url dan mengekstrak informasi berdasarkan nilai yang ditentukan oleh part.

  • Parameter

    • url: wajib. Nilai tipe STRING. Parameter ini menentukan URL. Jika URL tidak valid, kesalahan dikembalikan.

    • part: wajib. Nilai tipe STRING. Nilai yang valid: HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, dan USERINFO. Nilai parameter ini tidak case-sensitive.

    • key: opsional. Jika part diatur ke QUERY, fungsi ini mengembalikan nilai yang sesuai dengan key.

  • Nilai kembali

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

    • Jika nilai url, part, atau key null, null dikembalikan.

    • Jika nilai part tidak valid, kesalahan dikembalikan.

  • Contoh

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

PARSE_URL_TUPLE

  • Sintaks

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

    Mengurai url dan mengekstrak string yang ditentukan oleh sekelompok kunci input, seperti key1 dan key2. Fungsi PARSE_URL_TUPLE mirip dengan fungsi PARSE_URL. Namun, fungsi PARSE_URL_TUPLE memberikan kinerja yang lebih baik karena dapat mengekstrak string yang sesuai dengan beberapa kunci sekaligus.

  • Parameter

    • url: wajib. Nilai tipe STRING. Parameter ini menentukan URL. Jika URL tidak valid, kesalahan dikembalikan.

    • key1 dan key2: wajib. Nilai tipe STRING. Parameter ini menentukan kunci yang sesuai dengan string yang ingin Anda ekstrak. Nilai yang valid:

      • HOST: menunjukkan alamat host, yang dapat berupa nama domain atau alamat IP.

      • PATH: menunjukkan path sumber daya jaringan di server.

      • QUERY: menunjukkan string yang ingin Anda kueri.

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

      • PROTOCOL: menunjukkan jenis protokol.

      • AUTHORITY: menunjukkan nama domain atau alamat IP, nomor port, dan informasi autentikasi pengguna, seperti username dan password, dari server.

      • FILE: menunjukkan path sumber daya jaringan di server dan konten yang ingin Anda kueri. FILE terdiri dari PATH dan QUERY.

      • USERINFO: menunjukkan informasi autentikasi pengguna.

      • QUERY:<KEY>: menunjukkan nilai kunci tertentu dalam string kueri.

      Nilai parameter ini tidak case-sensitive. Jika Anda menentukan nilai selain nilai di atas, kesalahan dikembalikan.

  • Nilai kembali

    Nilai tipe STRING dikembalikan. Jika nilai url atau key null, kesalahan dikembalikan.

  • Contoh

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

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

    Hasil berikut dikembalikan:

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

  • Sintaks

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

    Mengembalikan jumlah substring yang cocok dengan pattern yang ditentukan dalam string source dari posisi awal yang ditentukan oleh start_position.

  • Parameter

    • source: wajib. Nilai tipe STRING. Parameter ini menentukan string yang berisi substring yang ingin Anda cari. Jika nilainya bukan string, kesalahan dikembalikan.

    • pattern: wajib. Konstanta tipe STRING atau ekspresi reguler. Parameter ini menentukan pola yang harus dicocokkan oleh substring yang ditentukan. Untuk informasi lebih lanjut tentang ekspresi reguler, lihat RLIKE. Jika pattern adalah string kosong atau bertipe data lainnya, kesalahan dikembalikan.

    • start_position: opsional. Konstanta tipe BIGINT. Nilai parameter ini harus lebih besar dari 0. Jika nilainya bertipe data lainnya 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

    Nilai tipe BIGINT dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika tidak ada substring yang cocok, 0 dikembalikan.

    • Jika nilai source, pattern, atau start_position null, null dikembalikan.

  • Contoh

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

      -- Nilai kembali adalah 1.
      select regexp_count('abababc', 'a.c');
      -- Nilai kembali adalah 2.
      select regexp_count('abababc', '[[:alpha:]]{2}', 3);
    • Contoh 2: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select regexp_count('abababc', null);
    • Contoh 3: Hitung jumlah titik dua (:) dalam string JSON {"account_id":123456789,"account_name":"allen","location":"hangzhou","bill":100}. Pernyataan contoh:

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

REGEXP_EXTRACT

  • Sintaks

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

    Dalam versi tipe data yang kompatibel dengan Hive, fungsi REGEXP_EXTRACT mengikuti spesifikasi regex Java. Namun, dalam versi tipe data 1.0 dan 2.0, fungsi ini mengikuti spesifikasi MaxCompute.

  • Deskripsi

    Memisahkan string source menjadi grup berdasarkan pattern yang diberikan dan mengembalikan string dalam grup ke-n yang ditentukan oleh groupid.

  • Parameter

    • source: wajib. Nilai tipe STRING. Parameter ini menentukan string yang ingin Anda pisahkan.

    • pattern: wajib. Konstanta tipe STRING atau ekspresi reguler. Parameter ini menentukan pola yang harus dicocokkan oleh substring yang ditentukan. Untuk informasi lebih lanjut tentang ekspresi reguler, lihat RLIKE.

    • groupid: opsional. Konstanta tipe BIGINT. Nilai parameter ini harus lebih besar dari atau sama dengan 0.

    Catatan

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

  • Nilai kembali

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

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

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

    • Jika nilai source, pattern, atau groupid null, null dikembalikan.

REGEXP_EXTRACT_ALL

  • Sintaks

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

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

  • Parameter

    • source: wajib. Nilai tipe STRING. Parameter ini menentukan string yang ingin Anda analisis.

    • pattern: wajib. Nilai tipe STRING. Parameter ini menentukan pola yang ingin dicocokkan oleh substring. Parameter ini dapat berupa konstanta tipe STRING atau ekspresi reguler. Untuk informasi lebih lanjut tentang ekspresi reguler, lihat RLIKE.

    • group_id: opsional. Nilai tipe 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 ID 1 digunakan untuk mencocokkan pola. Jika Anda mengatur parameter ini ke 0, semua grup digunakan untuk mencocokkan pattern.

  • Nilai kembali

    Nilai tipe ARRAY dikembalikan. Jika Anda menentukan group_id, array yang terdiri dari semua hasil pencocokan untuk grup yang ditentukan oleh group_id dikembalikan. Jika Anda tidak menentukan group_id, array yang terdiri dari semua hasil pencocokan untuk grup dengan ID 1 dikembalikan.

  • Contoh

    • Jika Anda tidak menentukan group_id, array yang terdiri dari semua hasil pencocokan untuk grup dengan ID 1 dikembalikan. Pernyataan contoh:

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

      Hasil berikut dikembalikan:

      +------------+
      | _c0        |
      +------------+
      | [100,300] |
      +------------+
    • Jika Anda mengatur group_id ke 2, array yang terdiri dari semua hasil pencocokan untuk grup dengan ID 2 dikembalikan. Pernyataan contoh:

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

      Hasil berikut dikembalikan:

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

REGEXP_INSTR

  • Sintaks

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

    Mengembalikan posisi awal atau akhir substring yang cocok dengan pattern sebanyak jumlah kali yang ditentukan oleh occurrence, dalam string source dari posisi awal yang ditentukan oleh start_position.

  • Parameter

    • source: wajib. Nilai tipe STRING. Parameter ini menentukan string sumber.

    • pattern: wajib. Konstanta tipe STRING atau ekspresi reguler. Parameter ini menentukan pola yang harus dicocokkan oleh substring yang ditentukan. Untuk informasi lebih lanjut tentang ekspresi reguler, lihat RLIKE. Jika pattern adalah string kosong, kesalahan dikembalikan.

    • start_position: opsional. Konstanta tipe BIGINT. Parameter ini menentukan posisi tempat pencarian dimulai. Jika Anda tidak menentukan parameter ini, nilai default 1 digunakan.

    • occurrence: opsional. Konstanta tipe BIGINT. Jika Anda tidak menentukan parameter ini, nilai default 1 digunakan. Nilai ini menunjukkan posisi tempat substring cocok dengan pola dalam pencarian pertama kali.

    • return_option: opsional. Konstanta tipe BIGINT. Parameter ini menentukan apakah posisi awal atau akhir substring yang cocok dengan pola yang ditentukan dikembalikan. Nilai yang valid: 0 dan 1. Jika parameter ini tidak ditentukan, nilai default 0 digunakan. Jika parameter ini diatur ke angka tidak valid atau nilai bertipe data lainnya, kesalahan dikembalikan. Nilai 0 menunjukkan bahwa posisi awal substring yang cocok dengan pola yang ditentukan dikembalikan. Nilai 1 menunjukkan bahwa posisi akhir substring yang cocok dengan pola yang ditentukan dikembalikan.

  • Nilai kembali

    Nilai tipe BIGINT dikembalikan. Nilai kembali adalah posisi awal atau akhir yang ditentukan oleh return_option dari substring yang cocok dalam string source. Nilai kembali bervariasi berdasarkan aturan berikut:

    • Jika pattern adalah string kosong, kesalahan dikembalikan.

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

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

  • Contoh

    • Contoh 1: Kembalikan posisi awal substring yang cocok dengan o[[:alpha:]]{1} sebanyak kedua kali dalam string i love www.taobao.com dari karakter ketiga. Pernyataan contoh:

      -- Nilai kembali adalah 14.
      select regexp_instr('i love www.taobao.com', 'o[[:alpha:]]{1}', 3, 2);
    • Contoh 2: Kembalikan posisi akhir substring yang cocok dengan o[[:alpha:]]{1} sebanyak kedua kali dalam string i love www.taobao.com dari karakter ketiga. Pernyataan contoh:

      -- Nilai kembali adalah 16.
      select regexp_instr('i love www.taobao.com', 'o[[:alpha:]]{1}', 3, 2, 1);
    • Contoh 3: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select regexp_instr('i love www.taobao.com', null, 3, 2);

REGEXP_REPLACE

  • Sintaks

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

    Dalam versi tipe data yang kompatibel dengan Hive, fungsi REGEXP_REPLACE mengikuti spesifikasi regex Java. Namun, dalam versi tipe data 1.0 dan 2.0, fungsi ini mengikuti spesifikasi MaxCompute.

  • Deskripsi

    Menggunakan string yang ditentukan oleh replace_string untuk menggantikan substring yang cocok dengan pattern yang diberikan sebanyak jumlah kali yang ditentukan oleh occurrence dalam string source dan mengembalikan hasilnya.

  • Parameter

    • source: wajib. Nilai tipe STRING. Parameter ini menentukan tiga string yang ingin Anda ganti.

    • pattern: wajib. Konstanta tipe STRING atau ekspresi reguler. Parameter ini menentukan pola yang harus dicocokkan oleh substring yang ditentukan. Untuk informasi lebih lanjut tentang ekspresi reguler, lihat RLIKE. Jika pattern adalah string kosong, kesalahan dikembalikan.

    • replace_string: wajib. Nilai tipe STRING. Nilai ini digunakan untuk mengganti string yang cocok dengan pattern.

      Catatan
      • Jika replace_string adalah string kosong, nilai dikembalikan setelah fungsi menghapus string yang cocok dengan nilai yang ditentukan oleh pattern.

      • Nilai replace_string dapat berisi referensi mundur \n. Jika nilai replace_string berisi referensi mundur, substring yang cocok dengan grup penangkapan ke-n yang ditentukan oleh pattern dimasukkan. n adalah angka dari 1 hingga 9. Jika nilai replace_string berisi referensi mundur \0, substring yang cocok dengan seluruh pattern dimasukkan. Backslash (\) harus di-escape. Misalnya, jika nilai replace_string berisi referensi mundur \1, backslash (\) dari referensi mundur harus di-escape dan referensi mundur \1 dinyatakan sebagai (\\1). Anda juga dapat menggunakan string mentah R'(\1)' untuk menyatakan referensi mundur \1.

    • occurrence: opsional. Konstanta tipe BIGINT, yang harus lebih besar dari atau sama dengan 0. Nilai parameter ini menunjukkan bahwa string yang cocok dengan pola yang ditentukan sebanyak jumlah kali yang ditentukan oleh occurrence diganti dengan replace_string. Jika parameter ini diatur ke 0, semua substring yang cocok dengan pola yang ditentukan diganti. Jika nilainya bertipe data lainnya atau kurang dari 0, kesalahan dikembalikan. Nilai default: 0.

  • Nilai kembali

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

    • Jika grup yang dirujuk tidak ada, hasil yang dikembalikan tidak terdefinisi.

    • Jika nilai replace_string null dan substring cocok dengan pattern yang diberikan, null dikembalikan.

    • Jika nilai replace_string null tetapi tidak ada substring yang cocok dengan pattern yang diberikan, string asli dikembalikan.

    • Jika nilai source, pattern, atau occurrence null, null dikembalikan.

  • Contoh

    • Contoh 1: Ganti string berdasarkan pola yang ditentukan. Pernyataan contoh:

      -- Nilai kembali adalah Abcd.
      select regexp_replace("abcd", "a", "A", 0);
      -- Nilai kembali adalah bcd.
      select regexp_replace("abcd", "a", "", 0);
      -- Nilai kembali adalah 19700101.
      select regexp_replace("1970-01-01", "-", "", 0);
      -- Nilai kembali adalah abc.
      select regexp_replace("a1b2c3", "[0-9]", "", 0);
      -- Nilai kembali a1b2c.
      select regexp_replace("a1b2c3", "[0-9]", "", 3);
    • Contoh 2: Gunakan (\\1)\\2-\\3 untuk mengganti semua substring yang cocok dengan ([[:digit:]]{3})\\.([[:digit:]]{3})\\.([[:digit:]]{4}) dalam string 123.456.7890. Pernyataan contoh:

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

      -- Nilai kembali adalah a b c d.
      select regexp_replace('abcd', '(.)', '\\1 ', 0);
      -- Nilai kembali adalah a bcd.
      select regexp_replace('abcd', '(.)', '\\1 ', 1);
      -- Nilai kembali adalah d.
      select regexp_replace("abcd", "(.*)(.)$", "\\2", 0);
    • Contoh 4: Data dalam kolom URL tabel url_set dalam format www.simple@xxx.com dan xxx dalam www.simple@xxx.com setiap baris berbeda. Ganti semua karakter setelah www dengan string dalam data kolom URL. Pernyataan contoh:

      -- Nilai kembali adalah wwwtest.
      select regexp_replace(url,'(www)(.*)','wwwtest',0) from url_set;
    • Contoh 5: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select regexp_replace('abcd', '(.)', null, 0);
    • Contoh 6: Grup yang ingin Anda rujuk tidak ada. Pernyataan contoh:

      -- Hanya satu grup yang didefinisikan dalam pola, dan grup yang dirujuk tidak ada.
      -- Kami menyarankan agar Anda tidak menggunakan fungsi ini dengan cara ini. Hasil merujuk grup yang tidak ada tidak terdefinisi.
      regexp_replace("abcd", "(.)", "\\2", 0) = "" or "abcd"
      -- Grup yang dirujuk didefinisikan dalam pola. Oleh karena itu, "\1" merujuk grup yang tidak ada.
      -- Kami menyarankan agar Anda tidak menggunakan fungsi ini dengan cara ini. Hasil merujuk grup yang tidak ada tidak terdefinisi.
      regexp_replace("abcd", "a", "\\1", 0) = "bcd" or "abcd" 

REGEXP_SUBSTR

  • Sintaks

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

    Mengembalikan string yang cocok dengan pattern yang diberikan sebanyak jumlah kali yang ditentukan oleh occurrence, dalam string source dari posisi awal yang ditentukan oleh start_position.

  • Parameter

    • source: wajib. Nilai tipe STRING. Parameter ini menentukan string tempat substring yang ingin Anda cari.

    • pattern: wajib. Konstanta tipe STRING atau ekspresi reguler. Parameter ini menentukan pola yang harus dicocokkan oleh substring yang ditentukan. Untuk informasi lebih lanjut tentang ekspresi reguler, lihat RLIKE.

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

    • occurrence: opsional. Konstanta tipe BIGINT. Nilai parameter ini harus lebih besar dari 0. Jika Anda tidak menentukan parameter ini, nilai default adalah 1. Nilai ini menunjukkan bahwa substring pertama yang cocok dikembalikan.

  • Nilai kembali

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

    • Jika pattern adalah string kosong, kesalahan dikembalikan.

    • Jika tidak ada substring yang cocok dengan pola yang ditentukan, null dikembalikan.

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

    • Jika nilai source, pattern, atau start_position, occurrence null, null dikembalikan.

  • Contoh

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

      -- Nilai kembali adalah aliyun.
      select regexp_substr('I love aliyun very much', 'a[[:alpha:]]{5}');
      -- Nilai kembali adalah have.
      select regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 1);
      -- Nilai kembali adalah  2.
      select regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 2);
    • Contoh 2: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select regexp_substr('I love aliyun very much', null);

REPEAT

  • Sintaks

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

    Mengembalikan string yang mengulang string yang ditentukan oleh str sebanyak n kali.

  • Parameter

    • str: wajib. Nilai tipe STRING. Jika nilai input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, nilai tersebut secara implisit dikonversi menjadi nilai tipe STRING sebelum perhitungan.

    • n: wajib. Nilai tipe BIGINT. Ukuran nilainya tidak melebihi 2 MB.

  • Nilai kembali

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

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

    • Jika n dibiarkan kosong, kesalahan dikembalikan.

    • Jika nilai str atau n null, null dikembalikan.

  • Contoh

    • Contoh 1: Kembalikan string yang mengulang string abc sebanyak 5 kali. Pernyataan contoh:

      -- Nilai kembali adalah abcabcabcabcabc.
      select repeat('abc', 5); 
    • Contoh 2: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select repeat('abc', null);

REPLACE

  • Sintaks

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

    Jika bagian dari string yang ditentukan oleh str persis cocok dengan string yang ditentukan oleh old, bagian string tersebut diganti dengan string yang ditentukan oleh new, dan string lengkap setelah penggantian dikembalikan. Jika tidak ada bagian dari string yang ditentukan oleh str yang cocok dengan string yang ditentukan oleh old, string asli yang ditentukan oleh str dikembalikan. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.

  • Parameter

    • str: wajib. Nilai tipe STRING. Parameter ini menentukan string yang ingin Anda ganti.

    • old: wajib. Parameter ini menentukan string yang Anda gunakan untuk perbandingan.

    • new: wajib. Parameter ini menentukan string yang Anda gunakan untuk mengganti string asli.

  • Nilai kembali

    Nilai tipe STRING dikembalikan. Jika parameter input diatur ke null, null dikembalikan.

  • Contoh

    • Contoh 1: Ganti bagian dari string ababab yang persis sama dengan string abab dengan string 12. Pernyataan contoh:

      -- Nilai kembali adalah 12ab.
      select replace('ababab','abab','12');
    • Contoh 2: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select replace('123abab456ab',null,'abab');

REVERSE

  • Sintaks

    string reverse(string <str>)
  • Deskripsi

    Mengembalikan karakter string dalam urutan terbalik.

  • Parameter

    str: wajib. Nilai tipe STRING. Jika nilai input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, nilai tersebut secara implisit dikonversi menjadi nilai tipe STRING sebelum perhitungan.

  • Nilai kembali

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

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

    • Jika nilai str null, null dikembalikan.

  • Contoh

    • Contoh 1: Kembalikan string yang karakternya dalam urutan terbalik dari string I love aliyun very much. Pernyataan contoh:

      -- Nilai kembali adalah hcum yrev nuyila evol I.
      select reverse('I love aliyun very much');
    • Contoh 2: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select reverse(null);

RPAD

  • Sintaks

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

    Menambahkan padding ke kanan str1 dengan str2 hingga mencapai panjang yang ditentukan length. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.

  • Parameter

    • str1: wajib. Nilai tipe STRING. Parameter ini menentukan string yang ingin Anda tambahkan padding ke kanannya.

    • length: wajib. Nilai tipe INT. Nilainya harus lebih besar dari atau sama dengan 0. Parameter ini menentukan jumlah karakter yang digunakan untuk padding kanan.

    • str2: wajib. Parameter ini menentukan string yang Anda gunakan untuk menambahkan padding ke kanan string lainnya.

  • Nilai kembali

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

    • Jika nilai length kurang dari jumlah karakter dalam str1, fungsi ini memotong str1 dari kiri untuk mendapatkan string dengan jumlah karakter yang ditentukan oleh length.

    • Jika length diatur ke 0, string kosong dikembalikan.

    • Jika tidak ada parameter input yang tersedia atau parameter input diatur ke null, null dikembalikan.

  • Contoh

    • Contoh 1: Tambahkan padding ke kanan string abcdefgh dengan string 12 untuk mendapatkan string dengan panjang 10 karakter. Pernyataan contoh:

      -- Nilai kembali adalah abcdefgh12.
      select rpad('abcdefgh', 10, '12');
    • Contoh 2: Tambahkan padding ke kanan string abcdefgh dengan string 12 untuk mendapatkan string dengan panjang 5 karakter. Pernyataan contoh:

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

      -- Nilai kembali adalah string kosong.
      select rpad('abcdefgh' ,0, '12'); 
    • Contoh 4: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select rpad(null ,0, '12');

RTRIM

  • Sintaks

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

    Menghapus karakter dari sisi kanan string yang ditentukan oleh str.

    • Jika Anda tidak menentukan trimChars, spasi di sisi kanan dihapus secara default.

    • Jika Anda menentukan trimChars, substring yang terdiri dari satu atau beberapa karakter yang ditentukan oleh trimChars dihapus dari sisi kanan string yang ditentukan oleh str.

  • Parameter

    • str: wajib. Nilai tipe STRING. Parameter ini menentukan string tempat karakter dihapus dari sisi kanan. Jika nilai input bertipe BIGINT, DECIMAL, DOUBLE, atau DATETIME, nilai tersebut secara implisit dikonversi menjadi nilai tipe STRING sebelum perhitungan.

    • trimChars: opsional. Nilai tipe STRING. Parameter ini menentukan karakter yang akan dihapus.

  • Nilai kembali

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

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

    • Jika nilai str atau trimChars null, null dikembalikan.

  • Contoh

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

      -- Nilai kembali adalah  yxTxyomxx.
      select rtrim(' yxTxyomxx ');
      -- Pernyataan di atas setara dengan pernyataan berikut:
      select trim(trailing from ' yxTxyomxx ');
    • Contoh 2: Hapus substring yang terdiri dari satu atau beberapa karakter dalam koleksi xy dari sisi kanan string yxTxyomxx.

      -- Nilai kembali adalah yxTxyom. Jika x atau y muncul di sisi kanan string, karakter tersebut dihapus.
      select rtrim('yxTxyomxx', 'xy');
      -- Pernyataan di atas setara dengan pernyataan berikut:
      select trim(trailing 'xy' from 'yxTxyomxx');
    • Contoh 3: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select rtrim(null);
      select rtrim('yxTxyomxx', null);

SOUNDEX

  • Sintaks

    string soundex(string <str>)
  • Deskripsi

    Mengonversi string normal menjadi string tipe SOUNDEX.

  • Parameter

    str: wajib. Nilai tipe STRING. Parameter ini menentukan string yang ingin Anda konversi. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.

  • Nilai kembali

    Nilai tipe STRING dikembalikan. Jika nilai str null, null dikembalikan.

  • Contoh

    • Contoh 1: Konversi string hello menjadi string tipe SOUNDEX. Pernyataan contoh:

      -- Nilai kembali adalah H400.
      select soundex('hello');
    • Contoh 2: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select soundex(null);

SPACE

  • Sintaks

    string space(bigint <n>)
  • Deskripsi

    Menghasilkan string spasi dengan panjang n.

  • Parameter

    n: wajib. Nilai tipe BIGINT. Ukuran nilainya tidak melebihi 2 MB.

  • Nilai kembali

    Nilai tipe STRING dikembalikan. Nilai null dikembalikan dalam skenario berikut:

    • Jika n dibiarkan kosong, kesalahan dikembalikan.

    • Jika nilai n null, null dikembalikan.

  • Contoh

    -- Nilai kembali adalah 10.
    select length(space(10));

SPLIT

  • Sintaks

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

      • source: Required. The string to split. The data type is STRING.

      • delimiter: Required. The separator that is used to split the string. This parameter supports regular expressions. The data type is STRING.

      • trimTailEmpty: Optional. Specifies whether to keep trailing empty strings. The default value is true. If you set this parameter to false, trailing empty strings are kept. The data type is BOOLEAN.

  • Nilai kembali

    Mengembalikan nilai tipe ARRAY<STRING>.

  • Contoh

SPLIT_PART

  • Sintaks

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

    Menggunakan delimiter yang ditentukan oleh separator untuk memisahkan string yang ditentukan oleh str, dan mengembalikan substring yang dimulai dari karakter yang ditentukan oleh start dan diakhiri dengan karakter yang ditentukan oleh end.

  • Parameter

    • str: wajib. Nilai tipe STRING. Parameter ini menentukan string yang ingin Anda pisahkan. Jika nilai input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, nilai tersebut secara implisit dikonversi menjadi nilai tipe STRING sebelum perhitungan.

    • separator: wajib. Konstanta tipe STRING. Parameter ini menentukan delimiter yang digunakan untuk memisahkan string. Delimiter dapat berupa karakter atau string.

    • start: wajib. Konstanta tipe BIGINT. Nilai parameter ini harus lebih besar dari 0. Parameter ini menentukan posisi awal substring yang akan dikembalikan. Posisi dimulai dari 1.

    • end: konstanta tipe BIGINT. Nilai parameter ini harus lebih besar dari atau sama dengan nilai start. Parameter ini menentukan posisi akhir substring yang akan dikembalikan. Jika parameter ini tidak ditentukan, nilai parameter ini sama dengan nilai start, dan substring yang dimulai dari karakter yang ditentukan oleh start dikembalikan.

  • Nilai kembali

    Nilai tipe STRING dikembalikan. Nilai null dikembalikan dalam skenario berikut:

    • Jika start diatur ke nilai lebih besar dari jumlah substring, misalnya string memiliki 6 substring tetapi nilai start lebih besar dari 6, string kosong dikembalikan.

    • Jika separator tidak ada dalam string yang ditentukan oleh str dan start diatur ke 1, seluruh string yang ditentukan oleh str dikembalikan. Jika str adalah string kosong, string kosong dikembalikan.

    • Jika separator adalah string kosong, string asli yang ditentukan oleh str dikembalikan.

    • Jika nilai end lebih besar dari jumlah substring, substring yang dimulai dari karakter yang ditentukan oleh start dikembalikan.

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

    • Jika nilai separator bukan konstanta tipe STRING, kesalahan dikembalikan.

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

    • Jika nilai parameter input kecuali separator null, null dikembalikan.

  • Contoh

    • Contoh 1: Gunakan koma (,) sebagai delimiter untuk memisahkan string a,b,c,d dan mengembalikan substring yang sesuai dengan aturan yang ditentukan. Pernyataan contoh:

      -- Nilai kembali adalah a.
      select split_part('a,b,c,d', ',', 1);
      -- Nilai kembali adalah a,b.
      select split_part('a,b,c,d', ',', 1, 2);
    • Contoh 2: Nilai start lebih besar dari jumlah substring setelah string yang ditentukan dipisahkan menjadi substring. Pernyataan contoh:

      -- Nilai kembali adalah string kosong.
      select split_part('a,b,c,d', ',', 10);
    • Contoh 3: separator tidak ada dalam string yang ditentukan oleh str. Pernyataan contoh:

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

      -- Nilai kembali adalah a,b,c,d.
      select split_part('a,b,c,d', '', 1);
    • Contoh 5: Nilai end lebih besar dari jumlah substring setelah string yang ditentukan dipisahkan menjadi substring. Pernyataan contoh:

      -- Nilai kembali adalah b,c,d.
      select split_part('a,b,c,d', ',', 2, 6);
    • Contoh 6: Parameter input kecuali separator diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select split_part('a,b,c,d', ',', null);

SUBSTR

  • Sintaks

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

    Mengembalikan substring yang dimulai dari start_position dalam string yang ditentukan oleh str dan memiliki panjang yang ditentukan oleh length.

  • Parameter

    • str: wajib. Nilai tipe STRING. Jika nilai input bertipe BIGINT, DECIMAL, DOUBLE, atau DATETIME, nilai tersebut secara implisit dikonversi menjadi nilai tipe STRING sebelum perhitungan.

    • start_position: wajib. Nilai tipe BIGINT. Nilai default: 1.

      • Edisi tipe data yang kompatibel dengan Hive: Jika start_position diatur ke 0, nilai kembali sama dengan saat parameter ini diatur ke 1.

      • Edisi tipe data MaxCompute V1.0 dan MaxCompute V2.0: Jika start_position diatur ke 0, null dikembalikan.

    • length: opsional. Nilai tipe BIGINT. Parameter ini menentukan panjang substring. Nilai parameter ini harus lebih besar dari 0.

      Penting
      • Jika setproject odps.function.strictmode diatur ke false dan nilai parameter length kurang dari 0, tidak ada substring yang dikembalikan.

      • Jika setproject odps.function.strictmode diatur ke true dan nilai parameter length kurang dari 0, kesalahan dikembalikan.

  • Nilai kembali

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

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

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

    • Jika length tidak ditentukan, substring dari posisi awal hingga akhir string yang ditentukan oleh str dikembalikan.

    • Jika nilai str, start_position, atau length null, null dikembalikan.

  • Contoh

    • Contoh 1: Kembalikan substring dengan panjang tertentu yang dimulai dari posisi tertentu dalam string abc. Pernyataan contoh:

      -- Nilai kembali adalah bc.
      select substr('abc', 2);
      -- Nilai kembali adalah b.
      select substr('abc', 2, 1);
      -- Nilai kembali adalah bc.
      select substr('abc',-2 , 2);
    • Contoh 2: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select substr('abc', null);

SUBSTRING

  • Sintaks

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

    Mengembalikan substring yang dimulai dari start_position dalam string yang ditentukan oleh str dan memiliki panjang yang ditentukan oleh length.

  • Parameter

    • str: wajib. Nilai tipe STRING atau BINARY.

    • start_position: wajib. Nilai tipe INT. Posisi awal dimulai dari 1. Jika start_position diatur ke 0, string kosong dikembalikan. Jika start_position diatur ke nilai negatif, pencarian dimulai dari akhir ke awal string dan karakter terakhir adalah -1.

    • length: opsional. Nilai tipe BIGINT. Parameter ini menentukan panjang substring. Nilai parameter ini harus lebih besar dari 0.

  • Nilai kembali

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

    • Jika nilai str bukan bertipe STRING atau BINARY, kesalahan dikembalikan.

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

    • Jika length tidak ditentukan, substring dari posisi awal hingga akhir string yang ditentukan oleh str dikembalikan.

    • Jika nilai str, start_position, atau length null, null dikembalikan.

  • Contoh

    • Contoh 1: Kembalikan substring dengan panjang tertentu yang dimulai dari posisi tertentu dalam string abc. Pernyataan contoh:

      -- Nilai kembali adalah bc.
      select substring('abc', 2);
      -- Nilai kembali adalah b.
      select substring('abc', 2, 1);
      -- Nilai kembali adalah bc.
      select substring('abc',-2,2);
      -- Nilai kembali adalah ab.
      select substring('abc',-3,2);
      -- Nilai kembali adalah 001.
      substring(bin(2345), 2, 3);
    • Contoh 2: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select substring('abc', null, null);

SUBSTRING_INDEX

  • Sintaks

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

    Untuk mengekstrak substring dari string str sebelum atau sesudah kemunculan ke-count delimiter. Jika count diatur ke nilai positif, string dipotong dari kiri ke kanan. Jika count diatur ke nilai negatif, string dipotong dari kanan ke kiri. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.

  • Parameter

    • str: wajib. Nilai tipe STRING. Parameter ini menentukan string yang ingin Anda potong.

    • separator: wajib. Delimiter bertipe STRING.

    • count: wajib. Nilainya bertipe INT. Parameter ini menentukan posisi delimiter.

  • Nilai kembali

    Nilai tipe STRING dikembalikan. Jika parameter input diatur ke null, null dikembalikan.

  • Contoh

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

      -- Nilai kembali adalah https://www.alibabacloud.
      select substring_index('https://www.alibabacloud.com', '.', 2);
      -- Nilai kembali adalah alibabacloud.com.
      select substring_index('https://www.alibabacloud.com', '.', -2);
    • Contoh 2: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select substring_index('https://www.alibabacloud.com', null, 2);

TO_CHAR

  • Sintaks

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

    Mengonversi data tipe BOOLEAN, BIGINT, DECIMAL, atau DOUBLE menjadi tipe STRING.

  • Parameter

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

  • Nilai kembali

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

    • Jika value bukan bertipe BOOLEAN, BIGINT, DECIMAL, atau DOUBLE, kesalahan dikembalikan.

    • Jika value diatur ke null, null dikembalikan.

  • Contoh

    • Contoh 1: Konversi nilai menjadi tipe STRING. Pernyataan contoh:

      -- Nilai kembali adalah 123.
      select to_char(123);
      -- Nilai kembali adalah TRUE.
      select to_char(true);
      -- Nilai kembali adalah 1.23.
      select to_char(1.23);
    • Contoh 2: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select to_char(null);

TO_JSON

  • Sintaks

    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-poin berikut:

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

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

  • Nilai kembali

    String JSON dikembalikan.

  • Contoh

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

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

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

TOLOWER

  • Sintaks

    string tolower(string <source>)
  • Deskripsi

    Mengonversi huruf kapital dalam string yang ditentukan oleh source menjadi huruf kecil.

  • Parameter

    source: wajib. Nilai tipe STRING. Jika nilai input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, nilai tersebut secara implisit dikonversi menjadi nilai tipe STRING sebelum perhitungan. Hanya karakter Inggris yang didukung.

  • Nilai kembali

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

    • Jika nilai source bukan bertipe STRING, BIGINT, DOUBLE, DECIMAL, atau DATETIME, kesalahan dikembalikan.

    • Jika nilai source null, null dikembalikan.

  • Contoh

    • Contoh 1: Konversi huruf kapital dalam string menjadi huruf kecil. Pernyataan contoh:

      -- Nilai kembali adalah abcd.
      select tolower('aBcd');
      -- Nilai kembali adalah china fighting.
      select tolower('China Fighting');
    • Contoh 2: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select tolower(null);

TOUPPER

  • Sintaks

    string toupper(string <source>)
  • Deskripsi

    Mengonversi huruf kecil dalam string yang ditentukan oleh source menjadi huruf kapital.

  • Parameter

    source: wajib. Nilai tipe STRING. Jika nilai input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, nilai tersebut secara implisit dikonversi menjadi nilai tipe STRING sebelum perhitungan. Hanya karakter Inggris yang didukung.

  • Nilai kembali

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

    • Jika nilai source bukan bertipe STRING, BIGINT, DOUBLE, DECIMAL, atau DATETIME, kesalahan dikembalikan.

    • Jika nilai source null, null dikembalikan.

  • Contoh

    • Contoh 1: Konversi huruf kecil dalam string menjadi huruf kapital. Pernyataan contoh:

      -- Nilai kembali adalah ABCD.
      select toupper('aBcd');
      -- Nilai kembali adalah CHINA FIGHTING.
      select toupper('China Fighting');
    • Contoh 2: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select toupper(null);

TRANSLATE

  • Sintaks

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

    Menggunakan karakter yang ditentukan dalam str3 untuk menggantikan karakter yang termasuk dalam str1 dari str2. Jika karakter yang termasuk dalam str1 tidak muncul dalam str2, tidak ada karakter yang diganti. Fungsi ini merupakan fungsi tambahan MaxCompute V2.0.

  • Nilai kembali

    Nilai tipe STRING dikembalikan. Jika parameter input diatur ke null, null dikembalikan.

  • Contoh

    • Contoh 1: Gunakan karakter yang ditentukan dalam string cd untuk menggantikan karakter yang termasuk dalam ababab dari abab. Pernyataan contoh:

      -- Nilai kembali adalah cdcdcd.
      select translate('ababab','abab','cd');
    • Contoh 2: Gunakan karakter yang ditentukan dalam string cdefg untuk menggantikan karakter yang termasuk dalam ababab dari abab. Pernyataan contoh:

      -- Nilai kembali adalah cdcdcd.
      select translate('ababab','abab','cdefg');
    • Contoh 3: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select translate('ababab','cd',null);

TRIM

  • Sintaks

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

    Hapus karakter dari kedua sisi kiri dan kanan string yang ditentukan oleh str.

    • Jika Anda tidak menentukan trimChars, spasi di kedua sisi dihapus secara default.

    • Jika Anda menentukan trimChars, substring yang terdiri dari satu atau beberapa karakter yang ditentukan oleh trimChars dihapus dari kedua sisi kiri dan kanan string yang ditentukan oleh str.

  • Parameter

    • str: wajib. Nilai tipe STRING. Parameter ini menentukan string tempat karakter dihapus dari kedua sisi kiri dan kanan. Jika nilai input bertipe BIGINT, DECIMAL, DOUBLE, atau DATETIME, nilai tersebut secara implisit dikonversi menjadi nilai tipe STRING sebelum perhitungan.

    • trimChars: opsional. Nilai tipe STRING. Parameter ini menentukan karakter yang akan dihapus.

  • Nilai kembali

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

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

    • Jika nilai str atau trimChars null, null dikembalikan.

  • Contoh

    • Contoh 1: Hapus spasi dari kedua sisi kiri dan kanan string yxTxyomxx . Pernyataan contoh:

      -- Nilai kembali adalah yxTxyomxx.
      select trim(' yxTxyomxx ');
      -- Pernyataan di atas setara dengan pernyataan berikut:
      select trim(both from ' yxTxyomxx ');
      select trim(from ' yxTxyomxx ');
    • Contoh 2: Hapus substring yang terdiri dari satu atau beberapa karakter dalam koleksi xy dari kedua sisi kiri dan kanan string yxTxyomxx.

      -- Nilai kembali adalah Txyom. Karakter x atau y apa pun di sisi kiri atau kanan dihapus.
      select trim('yxTxyomxx', 'xy');
      -- Pernyataan di atas setara dengan pernyataan berikut:
      select trim(both 'xy' from 'yxTxyomxx');
      select trim('xy' from 'yxTxyomxx');
    • Contoh 3: Parameter input diatur ke null. Pernyataan contoh:

      -- Nilai kembali adalah null.
      select trim(null);
      select trim('yxTxyomxx', null);

URL_DECODE

  • Sintaks

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

    Mengonversi string input dalam format application/x-www-form-urlencoded MIME menjadi string normal. Ini adalah fungsi invers dari url_encode. Format encoding harus mematuhi aturan berikut:

    • Semua huruf tetap tidak berubah.

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

    • Tanda plus (+) dikonversi menjadi spasi.

    • Urutan berformat %xy dikonversi menjadi nilai byte. Nilai byte berurutan didekode menjadi string terkait berdasarkan nilai encoding.

    • Karakter lain tetap tidak berubah.

  • Parameter

    • input: wajib. Nilai tipe STRING. Parameter ini menentukan string yang ingin Anda masukkan.

    • encoding: opsional. Parameter ini menentukan format encoding, yang dapat berupa GBK atau UTF-8. Jika Anda tidak menentukan parameter ini, nilai default adalah UTF-8.

  • Nilai kembali

    String terenkripsi UTF-8 bertipe STRING dikembalikan. Jika nilai input atau encoding null, null dikembalikan.

  • Contoh

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

URL_ENCODE

  • Sintaks

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

    Mengencode string input dalam format application/x-www-form-urlencoded MIME. Format encoding harus mematuhi aturan berikut:

    • Semua huruf tetap tidak berubah.

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

    • Spasi dikonversi menjadi tanda plus (+).

    • Karakter lain dikonversi menjadi nilai byte berdasarkan format encoding yang ditentukan. Setiap nilai byte kemudian direpresentasikan dalam format %xy, di mana xy adalah representasi heksadesimal dari nilai karakter.

  • Parameter

    • input: wajib. Nilai tipe STRING. Parameter ini menentukan string yang ingin Anda masukkan.

    • encoding: opsional. Parameter ini menentukan format encoding, yang dapat berupa GBK atau UTF-8. Jika Anda tidak menentukan parameter ini, nilai default adalah UTF-8.

  • Nilai kembali

    Nilai tipe STRING dikembalikan. Jika nilai input atau encoding null, null dikembalikan.

  • Contoh

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

Referensi

Jika fungsi-fungsi di atas tidak dapat memenuhi kebutuhan bisnis Anda, Anda dapat menulis logika kode sendiri untuk membuat fungsi yang ditentukan pengguna (UDF) guna memenuhi beragam kebutuhan bisnis Anda. Untuk informasi lebih lanjut, lihat Ikhtisar.