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 |
Mengembalikan kode ASCII karakter pertama dalam string yang ditentukan. | |
Menghitung jumlah karakter dari String A yang muncul di String B. | |
Mengonversi kode ASCII menjadi karakter. | |
Menggabungkan semua string yang ditentukan dan mengembalikan string akhir. | |
Menggabungkan semua string input dalam array menggunakan delimiter yang ditentukan. | |
Mendekode string dalam format encoding yang ditentukan. | |
Mengencode string dalam format encoding yang ditentukan. | |
Mengembalikan posisi string yang ditentukan di antara beberapa string yang dipisahkan koma (,). | |
Mengonversi angka menjadi string dalam format yang ditentukan. | |
Mengonversi data biner dalam format encoding yang ditentukan menjadi string terenkripsi UTF-8. | |
Mengembalikan data tipe ARRAY, MAP, atau STRUCT berdasarkan string JSON dan format output yang diberikan. | |
Mengekstrak satu string dari string JSON standar menggunakan metode yang ditentukan. | |
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. | |
Mengembalikan posisi String A dalam String B. | |
Menentukan apakah string dapat dikonversi dari satu set karakter ke set karakter lainnya. | |
Mengekstrak string dari string JSON standar berdasarkan serangkaian kunci input. | |
Memisahkan string menjadi pasangan kunci-nilai, memisahkan pasangan kunci-nilai tersebut, lalu mengembalikan nilai yang sesuai dengan kunci yang ditentukan. | |
Memisahkan string menjadi pasangan kunci-nilai, memisahkan pasangan kunci-nilai tersebut, lalu mengembalikan nilai yang sesuai dengan kunci-kunci tersebut. | |
Menghitung panjang string. | |
Menghitung panjang string dalam byte. | |
Mengembalikan posisi string yang ditentukan dalam string lainnya. | |
Menambahkan padding ke kiri string hingga mencapai panjang yang ditentukan. | |
Menghapus karakter dari sisi kiri string. | |
Mengembalikan nilai hash berdasarkan ekspresi string. | |
Mengembalikan nilai MD5 dari string. | |
Mengurai URL dan mengembalikan bagian tertentu dari URL tersebut. | |
Mengurai URL dan mengembalikan beberapa bagian dari URL tersebut. | |
Mengembalikan jumlah substring yang cocok dengan pola yang ditentukan dari posisi yang ditentukan. | |
Memisahkan string menjadi grup berdasarkan pola yang ditentukan dan mengembalikan string dalam grup yang ditentukan. | |
Menemukan semua substring yang cocok dengan pola ekspresi reguler dalam string dan mengembalikan substring tersebut sebagai array. | |
Mengembalikan posisi awal atau akhir substring yang dimulai dari posisi yang ditentukan dan cocok dengan pola yang ditentukan sebanyak jumlah kali tertentu. | |
Menggunakan string untuk menggantikan substring dari string lain jika substring tersebut cocok dengan pola yang ditentukan sebanyak jumlah kali tertentu. | |
Mengembalikan substring dalam string yang cocok dengan pola yang ditentukan sebanyak jumlah kali tertentu dari posisi yang ditentukan. | |
Mengembalikan string yang mengulang string yang ditentukan sebanyak jumlah kali tertentu. | |
Menggantikan substring dalam String A yang cocok dengan String B dengan substring lainnya. | |
Mengembalikan karakter string dalam urutan terbalik. | |
Menambahkan padding ke kanan string hingga mencapai panjang yang ditentukan. | |
Menghapus karakter dari sisi kanan string. | |
Mengonversi string menjadi string tipe SOUNDEX. | |
Menghasilkan string spasi. | |
Mengembalikan array setelah string dipisahkan dengan delimiter. | |
Menggunakan delimiter untuk memisahkan string menjadi substring dan mengembalikan substring dari bagian tertentu dari string tersebut. | |
Mengembalikan substring dengan panjang tertentu dari posisi tertentu dalam string. String bertipe STRING. | |
Mengembalikan substring dengan panjang tertentu dari posisi tertentu dalam string. String bertipe STRING atau BINARY. | |
Memotong string dari delimiter yang ditentukan. | |
Mengonversi data tipe BOOLEAN, BIGINT, DECIMAL, atau DOUBLE menjadi tipe STRING. | |
Mengonversi data tipe data kompleks menjadi string JSON. | |
Mengonversi huruf kapital dalam string menjadi huruf kecil. | |
Mengonversi huruf kecil dalam string menjadi huruf kapital. | |
Menggantikan bagian String A yang muncul di String B dengan String C. | |
Menghapus karakter dari kedua sisi kiri dan kanan string. | |
Mengonversi string input yang dalam format | |
Mengencode string input dalam format |
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
aabcdan muncul di stringabcde. 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
100menjadi 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.
Tdalamarray<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)danarray(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
aabcdanabcde. 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
namedanhanmeimeimenggunakan 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')menggunakantitik 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.
CatatanFormat 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
abcdalam formatUTF-8. Pernyataan contoh:-- Nilai kembali adalah abc. select encode("abc", "UTF-8");Contoh 2: Encode string
abcdalam formatUTF-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,NULLdikembalikan.
Contoh
Contoh 1: Kembalikan posisi substring
abdalam stringabc,hello,ab,cyang 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
hidalamabc,hello,ab,cyang 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_cyang 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
expr2lebih besar dari 0 dan kurang dari atau sama dengan 340, nilai yang dibulatkan ke jumlah tempat desimal yang ditentukan dikembalikan.Jika nilai
expr2adalah 0, nilai kembali hanya berisi bagian integer dan tidak berisi titik desimal atau bagian desimal.Jika nilai
expr2kurang dari 0 ataulebih 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>>, ataustruct<a:int, b:double, `C`:map<string,string>>.CatatanKunci dalam struct bersifat case-sensitive. Anda juga dapat menentukan struct dalam format
a BIGINT, b DOUBLE, yang setara denganSTRUCT<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
CatatanString 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_keysdanfrom_jsonuntuk 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.
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_OBJECTdengan 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 pernyataanset 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.newuntuk 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
REPLACEatauREGEXP_REPLACEuntuk 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_OBJECTuntuk 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"}', '$');
CatatanUntuk proyek MaxCompute yang dibuat pada atau setelah 21 Januari 2021, fungsi
GET_JSON_OBJECTmempertahankan string asli saat mengembalikan nilai. Untuk proyek MaxCompute yang dibuat sebelum 21 Januari 2021, fungsiGET_JSON_OBJECTmeng-escape karakter tereservasi JSON saat mengembalikan nilai. Contoh berikut membantu Anda menentukan cara fungsiGET_JSON_OBJECTmengembalikan 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_OBJECTagar 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
edalam stringTech on the net. Pernyataan contoh:-- Nilai kembali adalah 2. select instr('Tech on the net', 'e');Contoh 2: Kembalikan posisi substring
ondalam stringTech on the net. Pernyataan contoh:-- Nilai kembali adalah 6. select instr('Tech on the net', 'on');Contoh 3: Kembalikan posisi kemunculan kedua substring
edalam stringTech on the netdari 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
pathobjek 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.
CatatanJika 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:2menjadi pasangan kunci-nilai dan kembalikan nilai yang sesuai dengan kunci1. 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:2dikembalikan. Setelah pasangan kunci-nilai dipisahkan oleh split2, kunci dan nilai berikut dihasilkan:0 1/ 1 2Nilai 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 kuncitf. 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:0Setelah 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 0Nilai 21910 yang sesuai dengan kunci
tfdikembalikan.
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 netdalam 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
abdalam stringabchelloabc. Pernyataan contoh:-- Nilai kembali adalah 1. select locate('ab', 'abchelloabc');Contoh 2: Kembalikan posisi string
hidalam stringabchelloabc. 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
abcdefghdengan string12untuk mendapatkan string dengan panjang 10 karakter. Pernyataan contoh:-- Nilai kembali adalah 12abcdefgh. select lpad('abcdefgh', 10, '12');Contoh 2: Tambahkan padding ke kiri string
abcdefghdengan string12untuk 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
xydari sisi kiri stringyxTxyomxx.-- 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
nulldikembalikan 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
abababcyang 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>])CatatanDalam versi tipe data yang kompatibel dengan Hive, fungsi
REGEXP_EXTRACTmengikuti 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.
CatatanData 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 ID1digunakan untuk mencocokkan pola. Jika Anda mengatur parameter ini ke0, 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
1dikembalikan.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}sebanyakkeduakali dalam stringi love www.taobao.comdari karakterketiga. 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}sebanyakkeduakali dalam stringi love www.taobao.comdari karakterketiga. 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>])CatatanDalam versi tipe data yang kompatibel dengan Hive, fungsi
REGEXP_REPLACEmengikuti 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.
CatatanJika 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-\\3untuk mengganti semua substring yang cocok dengan([[:digit:]]{3})\\.([[:digit:]]{3})\\.([[:digit:]]{4})dalam string123.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.comdanxxxdalam www.simple@xxx.com setiap baris berbeda. Ganti semua karakter setelahwwwdengan 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 muchyang 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
abcsebanyak5kali. 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
abababyang persis sama dengan stringababdengan string12. 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
abcdefghdengan string12untuk mendapatkan string dengan panjang 10 karakter. Pernyataan contoh:-- Nilai kembali adalah abcdefgh12. select rpad('abcdefgh', 10, '12');Contoh 2: Tambahkan padding ke kanan string
abcdefghdengan string12untuk 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
xydari sisi kanan stringyxTxyomxx.-- 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
hellomenjadi 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 tofalse, 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 stringa,b,c,ddan 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.
PentingJika
setproject odps.function.strictmodediatur ke false dan nilai parameter length kurang dari 0, tidak ada substring yang dikembalikan.Jika
setproject odps.function.strictmodediatur 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
strsebelum atau sesudah kemunculan ke-countdelimiter. 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.
CatatanJika 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
valuenull, pasangan kunci-nilai tempatvaluetersebut berada tidak disertakan dalam string JSON yang dikembalikan. Misalnya, jikavalue2null,key2:value2tidak 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
cduntuk menggantikan karakter yang termasuk dalamabababdariabab. Pernyataan contoh:-- Nilai kembali adalah cdcdcd. select translate('ababab','abab','cd');Contoh 2: Gunakan karakter yang ditentukan dalam string
cdefguntuk menggantikan karakter yang termasuk dalamabababdariabab. 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
xydari kedua sisi kiri dan kanan stringyxTxyomxx.-- 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 MIMEmenjadi string normal. Ini adalah fungsi invers dariurl_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
%xydikonversi 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 manaxyadalah 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.