MaxCompute menyediakan fungsi string untuk memotong, menggabungkan, mengonversi, membandingkan, dan mencari data string dalam tabel.
SQL MaxCompute mendukung fungsi string berikut.
Function | Description |
Mengembalikan kode ASCII dari karakter pertama dalam sebuah string. | |
Menghitung jumlah karakter dari string A yang muncul di string B. | |
Mengonversi kode ASCII menjadi karakter. | |
Menggabungkan string. | |
Menggabungkan semua string input menggunakan delimiter yang ditentukan. | |
Mendekode string menggunakan format encoding yang ditentukan. | |
Mengencode string menggunakan format encoding yang ditentukan. | |
Menemukan posisi string yang ditentukan dalam string yang dipisahkan koma. | |
Mengonversi angka menjadi string dalam format yang ditentukan. | |
Mengonversi data biner dalam format encoding yang ditentukan menjadi string UTF-8. | |
Mengembalikan data bertipe ARRAY, MAP, atau STRUCT berdasarkan string JSON dan format output yang diberikan. | |
Mengekstrak string yang ditentukan dari string JSON standar menggunakan metode yang ditentukan. | |
Mengonversi string menjadi title case di mana setiap kata dimulai dengan huruf kapital diikuti oleh huruf kecil, dipisahkan oleh spasi. | |
Menemukan posisi string A dalam string B. | |
Menentukan apakah string dapat dikonversi dari character set A ke character set B. | |
Mengekstrak string yang sesuai dengan serangkaian kunci input dari string JSON standar. | |
Memisahkan string menjadi pasangan kunci-nilai, memisahkan pasangan tersebut, dan mengembalikan nilai yang sesuai dengan kunci yang ditentukan. | |
Memisahkan string menjadi beberapa pasangan kunci-nilai, memisahkan pasangan tersebut, dan mengembalikan nilai yang sesuai dengan beberapa kunci yang ditentukan. | |
Menghitung panjang string. | |
Menghitung panjang byte dari string. | |
Menemukan posisi substring yang ditentukan dalam string. | |
Menambahkan padding ke kiri string hingga panjang yang ditentukan. | |
Menghapus karakter dari ujung kiri string. | |
Mengembalikan nilai hash yang dihitung dari ekspresi string. | |
Menghitung hash MD5 dari string. | |
Mengurai URL dan mengembalikan informasi tentang bagian yang ditentukan. | |
Mengurai URL dan mengembalikan informasi tentang beberapa bagian. | |
Menghitung substring yang sesuai dengan pola yang ditentukan mulai dari posisi yang ditentukan. | |
Memisahkan string menjadi grup berdasarkan pola yang ditentukan dan mengembalikan string dari grup yang ditentukan. | |
Menemukan semua substring yang sesuai dengan pola ekspresi reguler dalam string dan mengembalikannya sebagai array. | |
Mengembalikan posisi awal atau akhir substring yang sesuai dengan pola yang ditentukan untuk kemunculan yang ditentukan mulai dari posisi yang ditentukan. | |
Mengganti substring yang sesuai dengan pola yang ditentukan untuk kemunculan yang ditentukan dengan string lain. | |
Mengembalikan substring yang sesuai dengan pola yang ditentukan untuk kemunculan yang ditentukan mulai dari posisi yang ditentukan. | |
Mengembalikan string yang diulang sejumlah kali yang ditentukan. | |
Mengganti substring yang sesuai dengan string yang ditentukan dengan string lain. | |
Mengembalikan kebalikan dari string. | |
Menambahkan padding ke kanan string hingga panjang yang ditentukan. | |
Menghapus karakter dari ujung kanan string. | |
Mengonversi string standar menjadi string SOUNDEX. | |
Menghasilkan string spasi. | |
Memisahkan string menggunakan delimiter dan mengembalikan array. | |
Memisahkan string menggunakan delimiter dan mengembalikan bagian yang ditentukan. | |
Mengembalikan substring dari string bertipe STRING yang dimulai dari posisi yang ditentukan dengan panjang yang ditentukan. | |
Mengembalikan substring dari string bertipe STRING atau BINARY yang dimulai dari posisi yang ditentukan dengan panjang yang ditentukan. | |
Mengekstrak substring sebelum atau sesudah kemunculan delimiter yang ditentukan. | |
Mengonversi nilai BOOLEAN, BIGINT, DECIMAL, atau DOUBLE ke representasi STRING-nya. | |
Mengonversi tipe kompleks yang ditentukan menjadi string JSON. | |
Mengonversi huruf kapital bahasa Inggris dalam string menjadi huruf kecil. | |
Mengonversi huruf kecil bahasa Inggris dalam string menjadi huruf kapital. | |
Mengganti semua kemunculan string A dalam string B dengan string C. | |
Menghapus karakter dari kedua ujung string. | |
Mengonversi string dari format | |
Mengencode string 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 menjalankan pernyataan SET untuk mengaktifkan edisi tersebut. Tipe data baru tersebut meliputi TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP, dan BINARY.
Tingkat sesi: Untuk menggunakan edisi tipe data MaxCompute V2.0, tambahkan
set odps.sql.type.system.odps2=true;sebelum pernyataan SQL yang ingin Anda jalankan, lalu commit dan eksekusi bersama-sama.Tingkat proyek: Pemilik proyek dapat mengaktifkan edisi tipe data MaxCompute V2.0 untuk seluruh proyek sesuai kebutuhan. Konfigurasi akan berlaku dalam 10 hingga 15 menit. Untuk mengaktifkannya pada tingkat proyek, jalankan perintah berikut:
setproject odps.sql.type.system.odps2=true;Untuk informasi lebih lanjut tentang
setproject, lihat Operasi proyek. Untuk informasi lebih lanjut tentang tindakan pencegahan saat mengaktifkan edisi tipe data MaxCompute V2.0 pada tingkat proyek, lihat Panduan versi tipe data.
Batasan
Fungsi berikut hanya mendukung karakter bahasa Inggris:
TRIM/RTRIM/LTRIM: Parameter trimChars hanya mendukung karakter bahasa Inggris.
REVERSE: Hanya mendukung karakter bahasa Inggris dalam mode Hive.
SOUNDEX: Hanya mengonversi karakter bahasa Inggris.
TOLOWER: Mengonversi huruf kapital bahasa Inggris dalam string menjadi huruf kecil.
TOUPPER: Mengonversi huruf kecil bahasa Inggris dalam string menjadi huruf kapital.
INITCAP: Mengonversi huruf pertama bahasa Inggris setiap kata menjadi huruf kapital dan sisanya menjadi huruf kecil.
ASCII
Sintaksis
bigint ascii(string <str>)Deskripsi
Mengembalikan kode ASCII dari karakter pertama dalam string str.
Parameter
str: wajib. Tipe STRING. Jika input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, secara implisit dikonversi ke tipe STRING sebelum perhitungan.
Nilai kembali
Mengembalikan nilai bertipe BIGINT. Nilai kembali mengikuti aturan berikut:
Jika str bukan bertipe STRING, BIGINT, DOUBLE, DECIMAL, atau DATETIME, kesalahan dikembalikan.
Jika str adalah NULL, NULL dikembalikan.
Contoh
Contoh 1: Mengembalikan kode ASCII dari karakter pertama dalam string
abcde. Pernyataan sampel:-- Mengembalikan 97. select ascii('abcde');Contoh 2: Parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select ascii(null);
CHAR_MATCHCOUNT
Sintaksis
bigint char_matchcount(string <str1>, string <str2>)Deskripsi
Menghitung jumlah karakter dalam str1 yang muncul di str2.
Parameter
str1 dan str2: wajib. Tipe STRING. Kedua string harus merupakan string UTF-8 yang valid. Jika ditemukan karakter tidak valid (tidak di-encode Unicode) selama perbandingan, nilai negatif dikembalikan.
Nilai kembali
Mengembalikan nilai bertipe BIGINT. Jika str1 atau str2 adalah NULL, NULL dikembalikan.
Contoh
Contoh 1: Hitung jumlah karakter dari string
aabcyang muncul diabcde. Pernyataan sampel:-- Mengembalikan 4. select char_matchcount('aabc','abcde');Contoh 2: Salah satu parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select char_matchcount(null,'abcde');
CHR
Sintaksis
string chr(bigint <ascii>)Deskripsi
Mengonversi kode ASCII yang ditentukan menjadi karakter.
Parameter
ascii: wajib. Nilai ASCII bertipe BIGINT. Rentang nilai valid: 0 hingga 127. Jika input bertipe STRING, DOUBLE, atau DECIMAL, secara implisit dikonversi ke tipe BIGINT sebelum perhitungan.
Nilai kembali
Mengembalikan nilai bertipe STRING. Nilai kembali mengikuti aturan berikut:
Jika nilai ascii berada di luar rentang valid, kesalahan dikembalikan.
Jika ascii bukan bertipe BIGINT, STRING, DOUBLE, atau DECIMAL, kesalahan dikembalikan.
Jika ascii adalah NULL, NULL dikembalikan.
Contoh
Contoh 1: Mengonversi kode ASCII
100menjadi karakter. Pernyataan sampel:-- Mengembalikan d. select chr(100);Contoh 2: Parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select chr(null);Contoh 3: Input adalah karakter bertipe STRING. Pernyataan sampel:
--Input secara implisit dikonversi ke tipe BIGINT untuk operasi, yang mengembalikan 'd'. select chr('100');
CONCAT
-
Sintaksis
array<T> concat(array<T> <a>, array<T> <b>[,...]) string concat(string <str1>, string <str2>[,...]) -
Deskripsi
-
Array sebagai input: Menggabungkan semua elemen dari beberapa array dan mengembalikan array baru.
-
String sebagai input: Menggabungkan beberapa string dan mengembalikan string baru.
-
-
Parameter
-
a dan b: wajib. Parameter ini menentukan array.
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 terlibat dalam operasi. -
str1 dan str2: wajib. Nilai bertipe STRING. Jika nilai input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, secara implisit dikonversi menjadi nilai bertipe STRING sebelum perhitungan. Jika nilai input bertipe data lain, kesalahan dikembalikan.
-
-
Nilai kembali
-
Nilai bertipe ARRAY dikembalikan. Jika salah satu array input adalah null, null dikembalikan.
-
Nilai bertipe STRING dikembalikan. Jika tidak ada parameter input yang dikonfigurasi atau parameter input diatur ke null, null dikembalikan.
-
-
Contoh
-
Contoh 1: Gabungkan semua elemen dari
array(10, 20)danarray(20, -20). Pernyataan sampel:-- Nilai kembali adalah [10, 20, 20, -20]. select concat(array(10, 20), array(20, -20)); -
Contoh 2: Salah satu array input berisi elemen null. Pernyataan sampel:
-- Nilai kembali adalah [10, null, 20, -20]. select concat(array(10, null), array(20, -20)); -
Contoh 3: Salah satu array input adalah null. Pernyataan sampel:
-- Nilai kembali adalah null. select concat(array(10, 20), null); -
Contoh 4: Gabungkan string
aabcdanabcde. Pernyataan sampel:-- Nilai kembali adalah aabcabcde. select concat('aabc','abcde'); -
Contoh 5: Input kosong. Pernyataan sampel:
-- Nilai kembali adalah null. select concat(); -
Contoh 6: Salah satu string input adalah null. Pernyataan sampel:
-- Nilai kembali adalah null. select concat('aabc', 'abcde', null);
-
CONCAT_WS
Sintaksis
string concat_ws(string <separator>, string <str1>, string <str2>[,...]) string concat_ws(string <separator>, array<string> <a>)Deskripsi
Mengembalikan string yang dibentuk dengan menggabungkan semua string input atau elemen array menggunakan delimiter yang ditentukan. Fungsi ini merupakan ekstensi dalam MaxCompute V2.0.
Parameter
separator: wajib. Delimiter bertipe STRING.
str1 dan str2: Harus menentukan minimal dua string. Tipe STRING. Jika input bertipe BIGINT, DECIMAL, DOUBLE, atau DATETIME, secara implisit dikonversi ke tipe STRING sebelum perhitungan.
a: wajib. Tipe ARRAY. Elemen array harus bertipe STRING.
Nilai kembali
Mengembalikan nilai bertipe STRING atau STRUCT. Nilai kembali mengikuti aturan berikut:
Jika str1 atau str2 bukan bertipe STRING, BIGINT, DECIMAL, DOUBLE, atau DATETIME, kesalahan dikembalikan.
Jika tidak ada parameter input yang diberikan atau salah satu parameter input adalah NULL, NULL dikembalikan.
Contoh
Contoh 1: Gabungkan string
namedanhanmeimeimenggunakan:. Pernyataan sampel:-- Mengembalikan name:hanmeimei. select concat_ws(':','name','hanmeimei');-
Contoh 2: Salah satu parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select concat_ws(':','avg',null,'34');Contoh 3: Gabungkan elemen dalam array
array('name', 'hanmeimei')menggunakan:. Pernyataan sampel:-- Mengembalikan name:hanmeimei. select concat_ws(':',array('name', 'hanmeimei'));
DECODE
Sintaksis
STRING DECODE(BINARY <str>, STRING <charset>)Deskripsi
Mendekode str menggunakan format yang ditentukan oleh charset.
Parameter
Parameter
Wajib
Deskripsi
str
Ya
Tipe BINARY. String yang akan didekode.
charset
Ya
Tipe STRING. Format encoding. Nilai valid: UTF-8, UTF-16, UTF-16LE, UTF-16BE, ISO-8859-1, US-ASCII.
CatatanFormat encoding ISO-8859-1 dan US-ASCII saat ini hanya mendukung karakter bahasa Inggris, bukan karakter Tionghoa.
Nilai kembali
Mengembalikan STRING. Jika str atau charset adalah NULL, NULL dikembalikan.
Contoh
Contoh 1: Encode dan decode string English Sample berdasarkan format UTF-8. Pernyataan sampel:
-- Encode dan decode string.SELECT DECODE(ENCODE("English Sample","UTF-8"), "UTF-8");Mengembalikan:
+-----+| _c0 |+-----+| English Sample |+-----+Contoh 2: Atur salah satu parameter input ke NULL. Pernyataan sampel:
SELECT DECODE(ENCODE("English Sample","UTF-8"), NULL);Mengembalikan:
+-----+| _c0 |+-----+| NULL |+-----+
ENCODE
Sintaksis
binary encode(string <str>, string <charset>)Deskripsi
Mengencode str menggunakan format yang ditentukan oleh charset.
Parameter
str: wajib. Tipe STRING. String yang akan di-re-encode.
charset: wajib. Tipe STRING. Format encoding. Nilai valid: UTF-8, UTF-16, UTF-16LE, UTF-16BE, ISO-8859-1, US-ASCII.
Nilai kembali
Mengembalikan tipe BINARY. Jika str atau charset adalah NULL, NULL dikembalikan.
Contoh
Contoh 1: Encode string
abcdalam formatUTF-8. Pernyataan sampel:-- Mengembalikan abc. select encode("abc", "UTF-8");Contoh 2: Encode string
abcdalam formatUTF-16BE. Pernyataan sampel:-- Mengembalikan =00a=00b=00c. select encode("abc", "UTF-16BE");Contoh 3: Salah satu parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select encode("abc", null);
FIND_IN_SET
Sintaksis
BIGINT FIND_IN_SET(STRING <str1>, STRING <str2>[, STRING <delimiter>])Deskripsi
Menemukan posisi string str1 dalam string str2 yang dipisahkan oleh delimiter, dihitung dari 1.
Parameter
Parameter
Wajib
Deskripsi
str1
Ya
Tipe STRING. String yang dicari.
str2
Ya
Tipe STRING. String yang dipisahkan oleh delimiter.
delimiter
Tidak
Konstanta STRING. Default adalah koma (
,). Delimiter dapat berupa satu karakter atau string.Nilai kembali
Mengembalikan tipe BIGINT. Nilai kembali mengikuti aturan berikut:
Jika str2 tidak mengandung str1 atau str1 mengandung delimiter, 0 dikembalikan.
Jika str1 atau str2 adalah
NULL,NULLdikembalikan.
Contoh
Contoh 1: Temukan posisi string
abdalam stringabc,hello,ab,c, yang dipisahkan koma (,). Pernyataan sampel:SELECT FIND_IN_SET('ab', 'abc,hello,ab,c') AS pos;Mengembalikan:
+------------+ | pos | +------------+ | 3 | +------------+Contoh 2: Temukan posisi string
hidalam stringabc,hello,ab,cyang dipisahkan koma (,). Pernyataan sampel:SELECT FIND_IN_SET('hi', 'abc,hello,ab,c') AS pos;Mengembalikan:
+------------+ | pos | +------------+ | 0 | +------------+Contoh 3: Temukan posisi string
abdalam string yang dipisahkan garis bawah (_)abc_hello_ab_c. Pernyataan sampel:SELECT FIND_IN_SET('ab', 'abc_hello_ab_c', '_') AS pos;Mengembalikan:
+------------+ | pos | +------------+ | 3 | +------------+Contoh 4: Parameter input
str1ataustr2adalahNULL. Pernyataan sampel:SELECT FIND_IN_SET(null, 'abc,hello,ab,c') AS pos;Mengembalikan:
+------------+ | pos | +------------+ | NULL | +------------+
FORMAT_NUMBER
Sintaksis
STRING FORMAT_NUMBER(DOUBLE|BIGINT|INT|SMALLINT|TINYINT|FLOAT|DECIMAL|STRING <expr1>, INT <expr2>)Deskripsi
Mengonversi expr1 menjadi string yang diformat sesuai dengan expr2.
Parameter
expr1: wajib. Nilai bertipe FLOAT, DOUBLE, atau DECIMAL. Parameter ini menentukan ekspresi yang ingin Anda format.
expr2: wajib. Nilai bertipe INT. Nilai valid: 0 hingga 340. Parameter ini menentukan jumlah tempat desimal yang ingin Anda pertahankan. Parameter ini juga dapat dinyatakan dalam format yang mirip dengan
#,###,###.##. Jumlah tempat desimal yang dikembalikan bervariasi berdasarkan nilai parameter ini.Nilai kembali
Nilai bertipe STRING dikembalikan. Nilai kembali bervariasi berdasarkan aturan berikut:
Jika nilai
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 mengandung 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: Format angka seperti yang ditentukan. Pernyataan sampel:
-- Mengembalikan 5.230. SELECT FORMAT_NUMBER(5.230134523424545456,3); -- Mengembalikan 12,332.123. SELECT FORMAT_NUMBER(12332.123456, '#,###,###,###.###');Contoh 2: Salah satu parameter input kosong atau NULL. Pernyataan sampel:
-- Mengembalikan NULL. SELECT FORMAT_NUMBER('',3); -- Mengembalikan NULL. SELECT FORMAT_NUMBER(null,3);
FROM_CHARSET
Sintaksis
STRING FROM_CHARSET(binary <source>, string <source_charset>, [string <mode>])Deskripsi
FROM_CHARSET mengonversi data biner yang di-encode non-UTF-8 menjadi string UTF-8 untuk perhitungan selanjutnya.
Parameter
source: wajib. Nilai bertipe BINARY. Parameter ini menentukan data biner yang ingin Anda konversi.
source_charset: wajib. Nilai bertipe STRING. Parameter ini menentukan format encoding asli dari data biner yang ditentukan oleh source. Nilai valid: UTF-8, UTF-16, UTF-16LE, UTF-16BE, ISO-8859-1, US-ASCII, GB2312, GBK, dan GB18030.
mode: opsional. Nilai bertipe STRING. Parameter ini menentukan mode pemrosesan jika karakter tidak dapat dikonversi saat fungsi FROM_CHARSET mengonversi data biner yang ditentukan oleh source menjadi string dalam format encoding yang ditentukan. Nilai valid:
NONE: melaporkan kesalahan. Tidak ada pemrosesan yang dilakukan. Ini adalah nilai default.
TRANSLIT: mengganti karakter dengan karakter serupa dalam format encoding yang ditentukan.
IGNORE: mengabaikan kesalahan dan melanjutkan menjalankan perintah.
Nilai kembali
Mengembalikan tipe STRING yang di-encode UTF-8. Saat parameter adalah NULL atau string kosong, nilai kembali mengikuti aturan berikut:
Jika salah satu parameter input adalah NULL, mengembalikan NULL.
Jika salah satu parameter input adalah string kosong, mengembalikan kesalahan.
Contoh
Contoh 1: Mengonversi data biner yang di-encode UTF-8 menjadi string yang di-encode UTF-8.
SELECT FROM_CHARSET(unhex('e58aa0e6b2b9e9949fe696a4e68bb70a'),'UTF-8', 'TRANSLIT');Contoh 2: Mengonversi data biner yang di-encode GBK menjadi string yang di-encode UTF-8.
SELECT FROM_CHARSET(unhex('b9feb9febac3a4ce'), 'GBK');Contoh 3: Jika parameter input adalah null, null dikembalikan.
SELECT FROM_CHARSET(unhex('b9feb9febac3a4ce'), null);
FROM_JSON
-
Sintaksis
from_json(<jsonStr>, <schema>) -
Deskripsi
Mengembalikan data bertipe ARRAY, MAP, atau STRUCT berdasarkan string JSON jsonStr dan format output schema.
-
Parameter
-
jsonStr: wajib. String JSON yang Anda masukkan.
-
schema: wajib. Skema string JSON. Nilai parameter ini harus dalam format yang sama seperti pernyataan untuk membuat tabel, seperti
array<bigint>,map<string, array<string>>, 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 bertipe OBJECT dan ARRAY diurai semaksimal mungkin. Jika tipe data string JSON tidak dipetakan ke tipe data MaxCompute apa pun, string JSON tersebut diabaikan. Untuk kemudahan penggunaan, semua tipe data JSON dapat dikonversi menjadi tipe data STRING yang didukung MaxCompute. Saat Anda mengonversi string JSON bertipe NUMBER menjadi nilai bertipe FLOAT, DOUBLE, atau DECIMAL, presisi nilai tersebut tidak dapat dijamin. Kami menyarankan Anda mengonversi string JSON menjadi nilai bertipe STRING terlebih dahulu, lalu mengonversi nilai yang diperoleh menjadi nilai bertipe FLOAT, DOUBLE, atau DECIMAL.
-
-
Nilai kembali
Nilai bertipe ARRAY, MAP, atau STRUCT dikembalikan.
-
Contoh
-
Contoh 1: Mengonversi string JSON tertentu menjadi nilai tipe data tertentu. Pernyataan sampel:
-- Nilai kembali adalah {"a":1,"b":0.8}. select from_json('{"a":1, "b":0.8}', 'a int, b double'); -- Nilai kembali adalah {"time":"26/08/2015"}. select from_json('{"time":"26/08/2015"}', 'time string'); -- Nilai kembali adalah {"a":1,"b":0.8}. select from_json('{"a":1, "b":0.8}', 'a int, b double, c string'); -- Nilai kembali adalah [1,2,3]. select from_json('[1, 2, 3, "a"]', 'array<bigint>'); -- Nilai kembali adalah {"d":"v","a":"1","b":"[1,2,3]","c":"{}"}. select from_json('{"a":1,"b":[1,2,3],"c":{},"d":"v"}', 'map<string, string>'); -
Contoh 2: Gunakan fungsi
map_keysdanfrom_jsonuntuk mendapatkan semua kunci dalam string JSON. Anda juga dapat menggunakan JSON_KEYS untuk tujuan yang sama. Pernyataan sampel:-- Nilai kembali adalah ["a","b"]. select map_keys(from_json('{"a":1,"b":2}','map<string,string>'));
-
GET_JSON_OBJECT
Sintaksis
STRING GET_JSON_OBJECT(JSON|STRING <json>, STRING <json_path>) -- Contoh: Mengembalikan Alice. SELECT GET_JSON_OBJECT(JSON '{"name": "Alice", "age": 30}', '$.name');Deskripsi
Fungsi GET_JSON_OBJECT mengekstrak string dari string JSON atau nilai bertipe data JSON berdasarkan path JSON yang ditentukan, json_path.
Catatan penggunaan
Fungsi
GET_JSON_OBJECTtidak mendukung sintaksis ekspresi reguler dalam path JSON.Sintaksis path JSON untuk tipe data JSON baru berbeda dari spesifikasi aslinya. Hal ini dapat menyebabkan masalah kompatibilitas.
Jika kueri berisi beberapa fungsi GET_JSON_OBJECT yang memproses data JSON yang sama, fungsi tersebut berulang kali mengurai string JSON yang sama. Hal ini dapat berdampak negatif pada kinerja dan meningkatkan biaya. Untuk menghindarinya, Anda dapat menggunakan
GET_JSON_OBJECTdengan fungsi user-defined table-valued function (UDTF) untuk mengubah data log JSON.
Parameter
json: Wajib. Data JSON yang ingin Anda proses. Parameter ini mendukung dua tipe input: JSON dan STRING.
Tipe JSON: Nilai bertipe data JSON. Nilai harus dalam format
{"Key":"Value", "Key":"Value",...}, sepertiJSON '{"name": "Alice", "age": 30}'.Tipe STRING: Jika input adalah STRING, harus memenuhi persyaratan format berikut:
String harus dalam format
'{"Key":"Value", "Key":"Value",...}', seperti'{"name": "Alice", "age": 30}'.Tanda kutip ganda (") harus di-escape dengan dua backslash (\\).
Tanda kutip tunggal (') harus di-escape dengan satu backslash (\).
json_path: Wajib. STRING yang menentukan ekspresi path JSON yang digunakan untuk mengekstrak data. Path harus dimulai dengan karakter
$, seperti$.aliyun.test[0].demo. Ekspresi path menggunakan karakter berikut:$: Menunjukkan node root..atau['']: Menunjukkan node anak. Ini digunakan untuk mengurai objek JSON, seperti$.store.book. Jika kunci JSON berisi titik (.), Anda dapat menggunakan['']sebagai gantinya.Mengekstrak data menggunakan
['']hanya didukung jika Anda menjalankan pernyataanSET odps.sql.udf.getjsonobj.new=true;.[]:[number]menunjukkan subscript array. Subscript dimulai dari 0.*: Karakter wildcard untuk[]. Mengembalikan seluruh array. Asterisk (*) tidak dapat di-escape.
Nilai kembali
Mengembalikan nilai bertipe STRING. Nilai ini adalah data yang diekstrak dari path yang ditentukan. Fungsi ini mengikuti aturan berikut untuk nilai kembalinya:
Jika json valid dan json_path ada, string yang sesuai dikembalikan.
Jika json kosong atau memiliki format yang tidak valid, NULL dikembalikan.
Jika json_path berisi
[*], nilai kembali tidak dalam format array. Untuk memaksa nilai kembali dalam format array yang seragam, Anda dapat menjalankan pernyataanSET odps.sql.force.getjsonobj.array.format=true;.Jika json_path tidak valid, NULL dikembalikan.
Perilaku pengembalian
Anda dapat mengontrol perilaku pengembalian fungsi dengan mengatur flag tingkat
proyek atau sesimenggunakan perintah berikut:SET odps.sql.udf.getjsonobj.new=true/false;.Dua perilaku pengembalian yang sesuai dengan pengaturan flag yang berbeda adalah sebagai berikut:
PentingKami menyarankan Anda menggunakan konfigurasi
SET odps.sql.udf.getjsonobj.new=true;. Konfigurasi ini memberikan perilaku fungsi yang lebih standar, menyederhanakan pemrosesan data, dan meningkatkan kinerja. Jika proyek MaxCompute Anda memiliki pekerjaan yang sudah ada yang bergantung pada perilaku escaping karakter tereservasi JSON, kami menyarankan Anda tetap menggunakan perilaku aslinya. Hal ini mencegah kesalahan atau masalah kebenaran yang mungkin terjadi jika Anda beralih ke perilaku baru tanpa verifikasi.Pengaturan Parameter
SET odps.sql.udf.getjsonobj.new=true;SET odps.sql.udf.getjsonobj.new=false;Perilaku pengembalian
Mengeluarkan string asli tanpa modifikasi.
Mengeluarkan string dengan karakter tereservasi JSON di-escape.
Nilai kembali adalah string JSON yang dapat diurai langsung. Anda tidak perlu menggunakan fungsi seperti
REPLACEatauREGEXP_REPLACEuntuk mengganti backslash.Karakter tereservasi JSON, seperti line feed (\n) dan tanda kutip ("), dikembalikan sebagai string
'\n'dan'\"'.Penguraian kunci duplikat
Objek JSON dapat berisi kunci duplikat, yang dapat diurai dengan sukses.
-- Mengembalikan 1. SELECT GET_JSON_OBJECT('{"a":"1","a":"2"}', '$.a');Objek JSON tidak dapat berisi kunci duplikat. Jika demikian, penguraian mungkin gagal.
-- Mengembalikan NULL. SELECT GET_JSON_OBJECT('{"a":"1","a":"2"}', '$.a');Urutan output
Output diurutkan sesuai urutan string JSON asli.
-- Mengembalikan {"b":"1","a":"2"}. SELECT GET_JSON_OBJECT('{"b":{"b":"1","a":"2"},"a":"2"}', '$.b');Output diurutkan secara alfabetis.
-- Mengembalikan {"a":"2","b":"1"}. SELECT GET_JSON_OBJECT('{"b":{"b":"1","a":"2"},"a":"2"}', '$.b');Jika mode kompatibilitas Hive diaktifkan dengan menjalankan perintah
SET odps.sql.hive.compatible=true;, fungsiGET_JSON_OBJECTmempertahankan string asli dalam nilai kembalinya.Untuk proyek MaxCompute yang dibuat pada atau setelah 21 Januari 2021, perilaku pengembalian default fungsi
GET_JSON_OBJECTadalah mempertahankan string asli.Untuk proyek MaxCompute yang dibuat sebelum 21 Januari 2021, perilaku pengembalian default fungsi
GET_JSON_OBJECTadalah meng-escape karakter tereservasi JSON.Anda dapat menggunakan contoh berikut untuk menentukan perilaku mana yang digunakan oleh fungsi
GET_JSON_OBJECTdi proyek MaxCompute Anda. Untuk melakukan ini, jalankan perintah berikut:SELECT GET_JSON_OBJECT('{"a":"[\\"1\\"]"}', '$.a'); --Nilai kembali jika perilakunya adalah meng-escape karakter tereservasi JSON: [\"1\"] --Nilai kembali jika perilakunya adalah mempertahankan string asli: ["1"]Untuk mengganti perilaku pengembalian default fungsi
GET_JSON_OBJECTdi proyek Anda menjadi mempertahankan string asli, Anda dapat mengirimkan tiket. Hal ini menghindari kebutuhan untuk mengatur properti pada tingkat sesi untuk setiap sesi.
Contoh
Parameter input JSON
Contoh 1: Mendapatkan nilai untuk kunci tertentu dari data JSON
-- Mengembalikan 1. SELECT GET_JSON_OBJECT(JSON '{"a":1, "b":2}', '$.a'); -- Mengembalikan NULL. SELECT GET_JSON_OBJECT(JSON '{"a":1, "b":2}', '$.c');Contoh 2: json_path yang tidak valid mengembalikan NULL.
-- Mengembalikan NULL. SELECT GET_JSON_OBJECT(JSON '{"a":1, "b":2}', '$invalid_json_path');Parameter input STRING
Contoh 1: Mengekstrak informasi dari objek JSON
src_json.json-- Siapkan data uji. CREATE TABLE IF NOT EXISTS src_json ( json STRING ); INSERT OVERWRITE TABLE src_json VALUES ('{"store": {"fruit":[{"weight":8,"type":"apple"}, {"weight":9,"type":"pear"}], "bicycle":{"price":19.95, "color":"red"}}, "email":"amy@only_for_json_udf_test.net", "owner":"amy"}'); -- Ekstrak informasi bidang owner. Nilai kembali adalah amy. SELECT GET_JSON_OBJECT(src_json.json, '$.owner') FROM src_json; -- Opsional. Output dengan mempertahankan string asli. SET odps.sql.udf.getjsonobj.new=true; -- Ekstrak informasi array pertama dalam bidang store.fruit. Nilai kembali adalah {"weight":8,"type":"apple"}. SELECT GET_JSON_OBJECT(src_json.json, '$.store.fruit[0]') FROM src_json; -- Ekstrak informasi bidang yang tidak ada. Nilai kembali adalah NULL. SELECT GET_JSON_OBJECT(src_json.json, '$.non_exist_key') FROM src_json;Contoh 2: Mengekstrak informasi dari data array JSON
-- Mengembalikan 2222. SELECT GET_JSON_OBJECT('{"array":[["aaaa",1111],["bbbb",2222],["cccc",3333]]}','$.array[1][1]'); -- Output dengan mempertahankan string asli. SET odps.sql.udf.getjsonobj.new=true; -- Mengembalikan ["h0","h1","h2"]. SELECT GET_JSON_OBJECT('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[*]'); -- Output dengan meng-escape karakter tereservasi JSON. SET odps.sql.udf.getjsonobj.new=false; -- Mengembalikan ["h0","h1","h2"]. SELECT GET_JSON_OBJECT('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[*]'); -- Mengembalikan h1. SELECT GET_JSON_OBJECT('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[1]');Contoh 3: Mengekstrak informasi dari data JSON dengan titik (
.) dalam kunci-- Siapkan data uji. CREATE TABLE json_test (id STRING, json STRING); -- Masukkan data di mana kuncinya berisi titik (.). INSERT INTO TABLE json_test (id, json) VALUES ("1", "{ \"China.beijing\": {\"school\": {\"id\":0,\"book\": [{\"title\": \"A\",\"price\": 8.95}, {\"title\": \"B\",\"price\": 10.2}] } } }" ); -- Masukkan data di mana kuncinya tidak berisi titik (.). INSERT INTO TABLE json_test (id, json) VALUES ("2", "{ \"China_beijing\": {\"school\": {\"id\":0,\"book\": [{\"title\": \"A\",\"price\": 8.95}, {\"title\": \"B\",\"price\": 10.2}] } } }" ); -- Gunakan tanda kurung siku [''] untuk mengurai data yang berisi titik (.). -- Ini mengekstrak nilai 'id' di bawah 'China.beijing'. Nilai kembali adalah 0. SELECT GET_JSON_OBJECT(json, "$['China.beijing'].school['id']") FROM json_test WHERE id =1; -- Untuk data tanpa karakter khusus, baik '.' maupun [''] valid dan setara. -- Ini mengekstrak nilai 'id' di bawah 'China_beijing'. Nilai kembali adalah 0. SELECT GET_JSON_OBJECT(json, "$['China_beijing'].school['id']") FROM json_test WHERE id =2; SELECT GET_JSON_OBJECT(json, "$.China_beijing.school['id']") FROM json_test WHERE id =2;Contoh 4: Gunakan
['']untuk kunci yang berisi titik (.)SET odps.sql.udf.getjsonobj.new=true; -- Mengembalikan 1. SELECT GET_JSON_OBJECT('{"a.1":"1","a":"2"}', '$[\'a.1\']');Contoh 5: Input JSON kosong atau tidak valid
-- Mengembalikan NULL. SELECT GET_JSON_OBJECT('','$.array[1][1]'); -- Mengembalikan NULL. SELECT GET_JSON_OBJECT('"array":["aaaa",1111],"bbbb":["cccc",3333]','$.array[1][1]');Contoh 6: String JSON yang di-escape
SET odps.sql.udf.getjsonobj.new=true; --Mengembalikan "1". SELECT GET_JSON_OBJECT('{"a":"\\"1\\"","b":"2"}', '$.a'); --Mengembalikan '1'. SELECT GET_JSON_OBJECT('{"a":"\'1\'","b":"2"}', '$.a');Contoh 7: Dukungan emoji
-- Mengembalikan simbol emoji. SELECT GET_JSON_OBJECT('{"a":"<Emoji symbol>"}', '$.a');Catatan: DataWorks tidak mendukung memasukkan karakter emoji secara langsung. Anda dapat menggunakan tool seperti Data Integration untuk menulis string yang di-encode yang sesuai dengan karakter emoji ke MaxCompute. Kemudian, Anda dapat menggunakan fungsi
GET_JSON_OBJECTuntuk memprosesnya.
INITCAP
Sintaksis
string initcap(<str>)Deskripsi
Mengonversi str menjadi title case di mana kata-kata dipisahkan oleh spasi, dengan huruf pertama setiap kata kapital dan sisanya huruf kecil.
Parameter
str: wajib. Tipe STRING. String input.
Nilai kembali
Mengembalikan string dengan huruf pertama setiap kata kapital dan sisanya huruf kecil.
Contoh
-- Mengembalikan Odps Sql. SELECT initcap("oDps sql");
INSTR
Sintaksis
bigint instr(string <str1>, string <str2>[, bigint <start_position>[, bigint <nth_appearance>]])Deskripsi
Menemukan posisi substring str2 dalam string str1.
Parameter
str1: wajib. Tipe STRING. String target untuk pencarian. Jika input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, secara implisit dikonversi ke STRING. Tipe lain mengembalikan kesalahan.
str2: wajib. Tipe STRING. Substring yang dicocokkan. Jika input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, secara implisit dikonversi ke STRING. Tipe lain mengembalikan kesalahan.
start_position: opsional. Nilai bertipe BIGINT. Kesalahan dikembalikan untuk tipe data lain. Parameter ini menentukan posisi karakter dalam str1 tempat pencarian dimulai. Posisi awal default adalah karakter pertama, yaitu posisi 1. Jika start_position bernilai negatif, pencarian dimulai dari akhir string, di mana karakter terakhir berada di posisi -1, karakter kedua dari belakang di -2, dan seterusnya.
nth_appearance: Opsional. Nilai bertipe BIGINT yang harus lebih besar dari 0. Parameter ini menentukan posisi kemunculan ke-nth_appearance dari str2 dalam str1. Jika nth_appearance bertipe data lain atau kurang dari atau sama dengan 0, kesalahan dikembalikan.
Nilai kembali
Mengembalikan tipe BIGINT. Nilai kembali mengikuti aturan berikut:
Jika str1 tidak mengandung str2, mengembalikan 0.
Jika str2 kosong, selalu cocok berhasil. Contoh:
select instr('abc','');mengembalikan 1.Jika str1, str2, start_position, atau nth_appearance adalah NULL, mengembalikan NULL.
Contoh
Contoh 1: Temukan posisi karakter
edalam stringTech on the net. Pernyataan sampel:-- Mengembalikan 2. select instr('Tech on the net', 'e');Contoh 2: Temukan posisi substring
ondalam stringTech on the net. Pernyataan sampel:-- Mengembalikan 6. select instr('Tech on the net', 'on');Contoh 3: Temukan posisi kemunculan kedua karakter
edalam stringTech on the netmulai dari karakter ketiga. Pernyataan sampel:-- Mengembalikan 14. select instr('Tech on the net', 'e', 3, 2);Contoh 4: Salah satu parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select instr('Tech on the net', null);
IS_ENCODING
Sintaksis
boolean is_encoding(string <str>, string <from_encoding>, string <to_encoding>)Deskripsi
Menentukan apakah string input str dapat dikonversi dari character set from_encoding ke to_encoding. Juga digunakan untuk mendeteksi teks rusak—biasanya atur from_encoding ke UTF-8 dan to_encoding ke GBK.
Parameter
str: wajib. Tipe STRING. String kosong dianggap valid untuk character set apa pun.
from_encoding, to_encoding: wajib. Tipe STRING. Character set sumber dan target.
Nilai kembali
Mengembalikan tipe BOOLEAN. Nilai kembali mengikuti aturan berikut:
Jika str berhasil dikonversi, mengembalikan True; jika tidak, False.
Jika str, from_encoding, atau to_encoding adalah NULL, mengembalikan NULL.
JSON_TUPLE
-
Sintaksis
string json_tuple(string <json>, string <key1>, string <key2>,...) -
Deskripsi
Mengekstrak string dari string JSON standar berdasarkan serangkaian kunci input, seperti
(key1,key2,...). -
Parameter
-
json: wajib. Nilai bertipe STRING. Parameter ini menentukan string JSON standar.
-
key: wajib. Nilai bertipe STRING. Parameter ini digunakan untuk menggambarkan
pathobjek JSON dalam string JSON. Nilainya tidak boleh dimulai dengan tanda dolar ($). Anda dapat memasukkan beberapa kunci sekaligus. MaxCompute mengurai objek JSON dengan menggunakan.atau['']. Jika kunci dalam objek JSON mencakup titik(.),['']dapat digunakan.
-
-
Nilai kembali
Nilai bertipe STRING dikembalikan.
Catatan-
Jika json kosong atau tidak valid, null dikembalikan.
-
Jika key kosong, tidak valid, atau tidak ada dalam string JSON, null dikembalikan.
-
Jika json valid dan key ada, string terkait dikembalikan.
-
Fungsi ini dapat mengurai data JSON yang berisi karakter Tionghoa.
-
Fungsi ini dapat mengurai data JSON bersarang.
-
Fungsi ini dapat mengurai data JSON yang berisi array bersarang.
-
Tindakan penguraian setara dengan eksekusi GET_JSON_OBJECT bersama dengan
set odps.sql.udf.getjsonobj.new=true;. Untuk mendapatkan beberapa objek dari string JSON, Anda harus memanggil fungsi GET_JSON_OBJECT beberapa kali. Akibatnya, string JSON diurai beberapa kali. Fungsi JSON_TUPLE memungkinkan Anda memasukkan beberapa kunci sekaligus dan string JSON hanya diurai sekali. JSON_TUPLE lebih efisien daripada GET_JSON_OBJECT. -
JSON_TUPLE adalah fungsi user-defined table-valued function (UDTF). Jika Anda ingin memilih beberapa kolom dari tabel, gunakan JSON_TUPLE bersama dengan klausa LATERAL VIEW.
-
KEYVALUE
Sintaksis
keyvalue(string <str>,[string <split1>,string <split2>,] string <key>) keyvalue(string <str>,string <key>)Deskripsi
Memisahkan string str menjadi pasangan kunci-nilai menggunakan split1, memisahkan pasangan menggunakan split2, dan mengembalikan nilai yang sesuai dengan key.
Parameter
str: wajib. Tipe STRING. String yang akan dipisahkan.
split1, split2: opsional. Tipe STRING. String delimiter untuk pemisahan. Jika tidak ditentukan, nilai default split1 adalah
";"dan split2 adalah":". Jika substring yang dipisahkan oleh split1 berisi beberapa split2, hasilnya tidak terdefinisi.key: wajib. Tipe STRING. Setelah dipisahkan oleh split1 dan split2, mengembalikan nilai untuk key.
Nilai kembali
Mengembalikan tipe STRING. Nilai kembali mengikuti aturan berikut:
Jika split1 atau split2 adalah NULL, mengembalikan NULL.
Jika str atau key adalah NULL atau tidak ada key yang cocok, mengembalikan NULL.
Jika beberapa pasangan kunci-nilai cocok, mengembalikan nilai untuk key yang cocok pertama.
Contoh
Contoh 1: Pisahkan string
0:1/;1:2menjadi pasangan kunci-nilai dan kembalikan nilai untuk kunci1. Pernyataan sampel:-- Mengembalikan 2. select keyvalue('0:1/;1:2', 1);Parameter split1 dan split2 tidak ditentukan. Nilai default split1 adalah titik koma (
";") dan nilai default split2 adalah titik dua (":").Setelah dipisahkan oleh split1, pasangan kunci-nilai adalah
0:1/,1:2. Setelah dipisahkan oleh split2:0 1/ 1 2Mengembalikan nilai 2 untuk kunci 1.
Contoh 2: Pisahkan string
“\;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\;”menggunakan“\;”sebagai split1 dan":"sebagai split2, lalu kembalikan nilai untuk kuncitf. Pernyataan sampel:-- Mengembalikan 21910. select keyvalue("\;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\;","\;",":","tf");Memisahkan string
"\;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\;"menggunakan delimiter"\;"menghasilkan pasangan kunci-nilai berikut.decreaseStore:1,xcard:1,isB2C:1,tf:21910,cart:1,shipping:2,pf:0,market:shoes,instPayAmount:0Hasil pemisahan oleh
":"adalah sebagai berikut.decreaseStore 1 xcard 1 isB2C 1 tf 21910 cart 1 shipping 2 pf 0 market shoes instPayAmount 0Mengembalikan nilai 21910 untuk kunci
tf.
KEYVALUE_TUPLE
Sintaksis
KEYVALUE_TUPLE(str, split1, split2, key1, key2, ..., keyN)Deskripsi
Memisahkan string str menjadi pasangan kunci-nilai menggunakan split1, memisahkan pasangan menggunakan split2, dan mengembalikan nilai untuk beberapa key.
Parameter
str: wajib. Tipe STRING. String yang akan dipisahkan.
split1, split2: wajib. Tipe STRING. String delimiter untuk pemisahan. Jika substring yang dipisahkan oleh split1 berisi beberapa split2, hasilnya tidak terdefinisi.
key: wajib. Tipe STRING. Setelah dipisahkan oleh split1 dan split2, mengembalikan nilai untuk key.
Nilai kembali
Mengembalikan tipe STRING. Nilai kembali mengikuti aturan berikut:
Jika split1 atau split2 adalah NULL, mengembalikan NULL.
Jika str atau key adalah NULL atau tidak ada key yang cocok, mengembalikan NULL.
Contoh
-- Buat tabel create table mf_user ( user_id string, user_info string ); -- Masukkan data insert into mf_user values('1','age:18;genda:f;address:abc'),('2','age:20;genda:m;address:bcd'); -- Kueri SELECT user_id, KEYVALUE(user_info,';',':','age') as age, KEYVALUE(user_info,';',':','genda') as genda, KEYVALUE(user_info,';',':','address') as address FROM mf_user; -- Setara dengan kueri KEYVALUE SELECT user_id, age, genda, address FROM mf_user LATERAL VIEW KEYVALUE_TUPLE(user_info,';', ':','age','genda','address') ui AS age,genda,address;Hasilnya adalah sebagai berikut.
+------------+------------+------------+------------+ | user_id | age | genda | address | +------------+------------+------------+------------+ | 1 | 18 | f | abc | | 2 | 20 | m | bcd | +------------+------------+------------+------------+
LENGTH
Sintaksis
bigint length(string <str>)Deskripsi
Menghitung panjang string str.
Parameter
str: wajib. Tipe STRING. Jika input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, secara implisit dikonversi ke STRING.
Nilai kembali
Mengembalikan tipe BIGINT. Nilai kembali mengikuti aturan berikut:
Jika str bukan bertipe STRING, BIGINT, DOUBLE, DECIMAL, atau DATETIME, mengembalikan kesalahan.
Jika str adalah NULL, mengembalikan NULL.
Jika str tidak di-encode UTF-8, mengembalikan -1.
Contoh
Contoh 1: Hitung panjang string
Tech on the net. Pernyataan sampel:-- Mengembalikan 15. select length('Tech on the net');Contoh 2: Parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select length(null);
LENGTHB
Sintaksis
bigint lengthb(string <str>)Deskripsi
Menghitung panjang byte dari string str.
Parameter
str: wajib. Tipe STRING. Jika input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, secara implisit dikonversi ke STRING.
Nilai kembali
Mengembalikan tipe BIGINT. Nilai kembali mengikuti aturan berikut:
Jika str bukan bertipe STRING, BIGINT, DOUBLE, DECIMAL, atau DATETIME, mengembalikan kesalahan.
Jika str adalah NULL, mengembalikan NULL.
Contoh
Contoh 1: Hitung panjang byte dari string
Tech on the net. Pernyataan sampel:-- Mengembalikan 15. select lengthb('Tech on the net');Contoh 2: Parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select lengthb(null);
LOCATE
Sintaksis
bigint locate(string <substr>, string <str>[, bigint <start_pos>])Deskripsi
Menemukan posisi substring substr dalam str. Gunakan start_pos untuk menentukan posisi awal (dihitung dari 1).
Parameter
substr: wajib. Tipe STRING. Substring yang dicari.
str: wajib. Tipe STRING. String yang dicari.
start_pos: opsional. Tipe BIGINT. Posisi awal untuk pencarian.
Nilai kembali
Mengembalikan tipe BIGINT. Nilai kembali mengikuti aturan berikut:
Jika str tidak mengandung substr, mengembalikan 0.
Jika str atau substr adalah NULL, mengembalikan NULL.
Jika start_pos adalah NULL, mengembalikan 0.
Contoh
Contoh 1: Temukan posisi string
abdalam stringabchelloabc. Pernyataan sampel:-- Mengembalikan 1. select locate('ab', 'abchelloabc');Contoh 2: Temukan posisi string
hidalam stringabchelloabc. Pernyataan sampel:-- Mengembalikan 0. select locate('hi', 'abc,hello,ab,c');Contoh 3: start_pos adalah NULL. Pernyataan sampel:
-- Mengembalikan 0. select locate('ab', 'abhelloabc', null);
LPAD
Sintaksis
string lpad(string <str1>, int <length>, string <str2>)Deskripsi
Menambahkan padding ke kiri string str1 hingga length karakter menggunakan string str2. Fungsi ini merupakan ekstensi dalam MaxCompute V2.0.
Parameter
str1: wajib. Tipe STRING. String yang akan ditambahkan padding di kiri.
length: wajib. Tipe INT. Jumlah karakter untuk padding kiri.
str2: wajib. String padding.
Nilai kembali
Mengembalikan tipe STRING. Nilai kembali mengikuti aturan berikut:
Jika length kurang dari panjang str1, mengembalikan karakter length paling kiri dari str1.
Jika length adalah 0, mengembalikan string kosong.
Jika tidak ada parameter input atau salah satu parameter input adalah NULL, mengembalikan NULL.
Contoh
Contoh 1: Gunakan string
12untuk menambahkan padding ke kiri stringabcdefghhingga 10 karakter. Perintah sampel adalah sebagai berikut.-- Mengembalikan 12abcdefgh. select lpad('abcdefgh', 10, '12');Contoh 2: Gunakan string
12untuk menambahkan padding ke kiri stringabcdefghhingga panjang 5 karakter. Berikut adalah perintah sampel.-- Mengembalikan abcde. select lpad('abcdefgh', 5, '12');Contoh 3: length adalah 0. Pernyataan sampel:
-- Mengembalikan string kosong. select lpad('abcdefgh' ,0, '12');Contoh 4: Salah satu parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select lpad(null ,0, '12');
LTRIM
Sintaksis
string ltrim(string <str>[, <trimChars>]) string trim(leading [<trimChars>] from <str>)Deskripsi
Menghapus karakter dari ujung kiri str:
Jika trimChars tidak ditentukan, secara default menghapus spasi di awal.
Jika Anda menentukan trimChars, fungsi memperlakukan karakter dalam trimChars sebagai himpunan dan menghapus substring terpanjang yang mungkin dari ujung kiri str yang seluruhnya terdiri dari karakter dalam himpunan trimChars.
Parameter
str: wajib. Tipe STRING. String yang akan dipangkas. Jika input bertipe BIGINT, DECIMAL, DOUBLE, atau DATETIME, secara implisit dikonversi ke STRING.
trimChars: opsional. Tipe STRING. Karakter yang akan dihapus.
Nilai kembali
Mengembalikan tipe STRING. Nilai kembali mengikuti aturan berikut:
Jika str bukan bertipe STRING, BIGINT, DOUBLE, DECIMAL, atau DATETIME, mengembalikan kesalahan.
Jika str atau trimChars adalah NULL, mengembalikan NULL.
Contoh
Contoh 1: Hapus spasi di awal dari string
yxTxyomxx. Pernyataan sampel:-- Mengembalikan yxTxyomxx. select ltrim(' yxTxyomxx '); -- Setara dengan: select trim(leading from ' yxTxyomxx ');Contoh 2: Hapus semua karakter di awal dari string
yxTxyomxxyang berada dalam himpunanxy.-- Mengembalikan Txyomxx. Setiap x atau y di awal dihapus. select ltrim('yxTxyomxx', 'xy'); -- Setara dengan: select trim(leading 'xy' from 'yxTxyomxx');Contoh 3: Parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select ltrim(null); select ltrim('yxTxyomxx', null);
MASK_HASH
Sintaksis
mask_hash(<expr>)Deskripsi
Mengembalikan nilai hash yang dihitung dari ekspresi string expr. Nilai hash yang identik menunjukkan nilai ekspresi yang identik.
Parameter
expr: wajib. Ekspresi string untuk perhitungan hash. Mendukung tipe STRING, CHAR, VARCHAR, BINARY.
Nilai kembali
Mengembalikan nilai hash sepanjang 64 byte. Untuk ekspresi non-string, mengembalikan
null(kompatibel Hive).Contoh
-- Mengembalikan hash untuk abc select mask_hash("abc"); -- Mengembalikan +------------+ | _c0 | +------------+ | ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad | +------------+ -- Mengembalikan NULL untuk input non-string select mask_hash(100); -- Mengembalikan +------------+ | _c0 | +------------+ | NULL | +------------+
MD5
Sintaksis
string md5(string <str>)Deskripsi
Menghitung hash MD5 dari string str.
Parameter
str: wajib. Tipe STRING. Jika input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, secara implisit dikonversi ke STRING.
Nilai kembali
Mengembalikan tipe STRING. Nilai kembali mengikuti aturan berikut:
Jika str bukan bertipe STRING, BIGINT, DOUBLE, DECIMAL, atau DATETIME, mengembalikan kesalahan.
Jika str adalah NULL, mengembalikan NULL.
Contoh
Contoh 1: Hitung hash MD5 dari string
Tech on the net. Pernyataan sampel:-- Mengembalikan ddc4c4796880633333d77a60fcda9af6. select md5('Tech on the net');Contoh 2: Parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select md5(null);
PARSE_URL
Sintaksis
string parse_url(string <url>, string <part>[, string <key>])Deskripsi
Mengurai url dan mengekstrak informasi yang ditentukan oleh part.
Parameter
url: wajib. Tipe STRING. Tautan URL. URL yang tidak valid mengembalikan kesalahan.
part: wajib. Tipe STRING. Nilai valid: HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO (tidak case-sensitive).
key: opsional. Ketika part adalah QUERY, mengembalikan nilai untuk key.
Deskripsi nilai kembali
Mengembalikan tipe STRING. Nilai kembali mengikuti aturan berikut:
Jika url, part, atau key adalah NULL, mengembalikan NULL.
Jika part tidak valid, mengembalikan kesalahan.
Contoh
-- Mengembalikan example.com. select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'HOST'); -- Mengembalikan /over/there/index.dtb. select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'PATH'); -- Mengembalikan animal. select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'QUERY', 'type'); -- Mengembalikan nose. select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'REF'); -- Mengembalikan file. select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'PROTOCOL'); -- Mengembalikan username:password@example.com:8042. select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'AUTHORITY'); -- Mengembalikan username:password. select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'USERINFO');
PARSE_URL_TUPLE
Sintaksis
string parse_url_tuple(string <url>, string <key1>, string <key2>,...)Deskripsi
Mengurai url dan mengekstrak string yang ditentukan oleh kunci input key1, key2, dll. Mirip dengan PARSE_URL tetapi mengekstrak beberapa kunci secara simultan dengan kinerja lebih baik.
Parameter
url: wajib. Tipe STRING. Tautan URL. URL yang tidak valid mengembalikan kesalahan.
key1, key2: wajib. Tipe STRING. Kunci yang akan diekstrak. Nilai valid:
HOST: Alamat host (domain atau IP).
PATH: Jalur ke sumber daya jaringan di server.
QUERY: String kueri (konten untuk kueri).
REF: menunjukkan pengidentifikasi fragmen URL, yaitu konten setelah simbol
#.PROTOCOL: Jenis protokol.
AUTHORITY: Domain/IP server, port, dan info otentikasi pengguna (username, password).
FILE: Jalur dan konten kueri (PATH + QUERY).
USERINFO: Info otentikasi pengguna.
QUERY:<KEY>: Nilai untuk kunci yang ditentukan dalam string kueri.
Tidak case-sensitive. Nilai tidak valid mengembalikan kesalahan.
Deskripsi Nilai Kembali
Mengembalikan tipe STRING. Jika url atau key adalah NULL, mengembalikan kesalahan.
Contoh
Ekstrak string untuk setiap kunci dari
file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose. Pernyataan sampel:select parse_url_tuple('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'HOST', 'PATH', 'QUERY', 'REF', 'PROTOCOL', 'AUTHORITY', 'FILE', 'USERINFO', 'QUERY:type', 'QUERY:name') as (item0, item1, item2, item3, item4, item5, item6, item7, item8, item9);Mengembalikan:
+------------+------------+------------+------------+------------+------------+------------+------------+------------+------------+ | item0 | item1 | item2 | item3 | item4 | item5 | item6 | item7 | item8 | item9 | +------------+------------+------------+------------+------------+------------+------------+------------+------------+------------+ | example.com | /over/there/index.dtb | type=animal&name=narwhal | nose | file | username:password@example.com:8042 | /over/there/index.dtb?type=animal&name=narwhal | username:password | animal | narwhal | +------------+------------+------------+------------+------------+------------+------------+------------+------------+------------+
REGEXP_COUNT
Sintaksis
bigint regexp_count(string <source>, string <pattern>[, bigint <start_position>])Deskripsi
Menghitung substring dalam source mulai dari start_position yang sesuai dengan pattern yang ditentukan.
Parameter
source: wajib. Tipe STRING. String yang akan dicari. Tipe lain mengembalikan kesalahan.
pattern: wajib. Konstanta STRING atau ekspresi reguler. Pola yang akan dicocokkan. Untuk panduan regex lebih lanjut, lihat Pencocokan string RLIKE. Pola pattern yang kosong atau tidak valid mengembalikan kesalahan.
start_position: opsional. Konstanta bertipe BIGINT. Nilai parameter ini harus lebih besar dari 0. Jika nilainya bertipe data lain atau kurang dari atau sama dengan 0, kesalahan dikembalikan. Jika Anda tidak menentukan parameter ini, nilai default adalah 1. Nilai ini menunjukkan bahwa pencarian dimulai dari karakter pertama string source.
Nilai kembali
Mengembalikan tipe BIGINT. Nilai kembali mengikuti aturan berikut:
Jika tidak ditemukan kecocokan, mengembalikan 0.
Jika source, pattern, atau start_position adalah NULL, mengembalikan NULL.
Contoh
Contoh 1: Hitung substring yang cocok dalam
abababcdari posisi yang ditentukan. Pernyataan sampel:-- Mengembalikan 1. select regexp_count('abababc', 'a.c'); -- Mengembalikan 2. select regexp_count('abababc', '[[:alpha:]]{2}', 3);Contoh 2: Salah satu parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select regexp_count('abababc', null);Contoh 3: Hitung kemunculan
:dalam string JSON{"account_id":123456789,"account_name":"allen","location":"hangzhou","bill":100}. Pernyataan sampel:-- Mengembalikan 4. select regexp_count('{"account_id":123456789,"account_name":"allen","location":"hangzhou","bill":100}',':');
REGEXP_EXTRACT
Sintaksis
string regexp_extract(string <source>, string <pattern>[, bigint <groupid>])CatatanDalam versi tipe data yang kompatibel Hive,
REGEXP_EXTRACTmengikuti spesifikasi regex Java. Dalam versi tipe data 1.0 dan 2.0, mengikuti spesifikasi MaxCompute.Deskripsi
Memisahkan string source menjadi grup menggunakan pattern dan mengembalikan string dari grup groupid.
Parameter
source: wajib. Tipe STRING. String yang akan dipisahkan.
pattern: wajib. Konstanta STRING atau ekspresi reguler. Pola yang akan dicocokkan. Untuk panduan regex lebih lanjut, lihat Pencocokan string RLIKE.
groupid: opsional. Konstanta BIGINT, harus ≥0.
CatatanData disimpan dalam format UTF-8. Karakter Tionghoa dapat direpresentasikan dalam heksadesimal dalam rentang [\\x{4e00},\\x{9fa5}].
Nilai kembali
Mengembalikan tipe STRING. Nilai kembali mengikuti aturan berikut:
Jika pattern adalah string kosong atau tidak ada grup yang ditentukan dalam pattern, kesalahan dikembalikan.
groupid bukan bertipe BIGINT atau kurang dari 0, kesalahan dikembalikan. Jika Anda tidak menentukan parameter ini, nilai default adalah 1, yang menunjukkan bahwa substring dalam grup pertama dikembalikan. Jika groupid diatur ke 0, substring yang cocok dengan seluruh pattern dikembalikan.
Jika source, pattern, atau groupid adalah NULL, mengembalikan NULL.
REGEXP_EXTRACT_ALL
Sintaksis
array<T> regexp_extract_all(string <source>, string <pattern>[,bigint <group_id>])Deskripsi
Menemukan semua substring yang sesuai dengan pola ekspresi reguler dalam string dan mengembalikannya sebagai array.
Parameter
source: wajib. Tipe STRING. String yang akan dianalisis.
pattern: wajib. Tipe STRING. Pola yang akan dicocokkan. Ini dapat berupa konstanta STRING atau ekspresi reguler. Untuk panduan regex lebih lanjut, lihat Pencocokan string RLIKE.
group_id: opsional. Nilai BIGINT. Parameter ini menentukan ID grup yang digunakan untuk mencocokkan pola. Nilai parameter ini harus lebih besar dari atau sama dengan
0. Jika Anda tidak menentukan parameter ini, grup dengan group_id1digunakan untuk mencocokkan pola. Jika Anda mengatur parameter ini ke0, pattern dicocokkan secara keseluruhan.
Nilai kembali
Nilai ARRAY dikembalikan. Jika Anda menentukan group_id, array yang berisi semua hasil pencocokan untuk group_id yang ditentukan dikembalikan. Jika Anda tidak menentukan group_id, array yang berisi semua hasil pencocokan untuk group_id
1dikembalikan.Contoh
Jika Anda tidak menentukan group_id, perilaku default adalah mengembalikan hasil yang cocok dengan group_id pertama.
SELECT regexp_extract_all('100-200, 300-400', '(\\d+)-(\\d+)');Mengembalikan:
+------------+ | _c0 | +------------+ | [100,300] | +------------+Jika Anda mengatur nilai group_id ke
2, hasil pencocokan untuk group_id kedua dikembalikan.SELECT regexp_extract_all('100-200, 300-400', '(\\d+)-(\\d+)',2);Berikut adalah hasilnya.
+------------+ | _c0 | +------------+ | [200,400] | +------------+
REGEXP_INSTR
Sintaksis
bigint regexp_instr(string <source>, string <pattern>[,bigint <start_position>[, bigint <occurrence>[, bigint <return_option>]]])Deskripsi
Mengembalikan posisi awal atau akhir kemunculan ke-occurrence dari substring yang sesuai dengan pattern dalam source, dimulai dari start_position.
Parameter
source: Wajib. String sumber. Tipe data harus STRING.
pattern: Wajib. Pola yang akan dicocokkan. Nilainya dapat berupa konstanta STRING atau ekspresi reguler. Untuk informasi lebih lanjut tentang ekspresi reguler, lihat Pencocokan string RLIKE. Pola pattern yang kosong mengembalikan kesalahan.
start_position: Opsional. Posisi tempat pencarian dimulai. Nilainya harus konstanta BIGINT. Nilai default adalah 1.
occurrence: Opsional. Kemunculan kecocokan yang akan ditemukan. Nilainya harus konstanta BIGINT. Nilai default adalah 1, yang menunjukkan kecocokan pertama.
return_option: Opsional. Posisi yang akan dikembalikan. Nilainya harus konstanta BIGINT. Nilai valid: 0 menentukan posisi awal dan 1 menentukan posisi akhir. Nilai default adalah 0. Jika Anda menentukan nilai yang tidak valid, kesalahan dikembalikan.
Nilai kembali
Nilai kembali bertipe BIGINT. Parameter return_option menentukan apakah akan mengembalikan posisi awal atau akhir substring yang cocok dalam source. Nilai kembali ditentukan oleh aturan berikut:
Jika pattern kosong, kesalahan dikembalikan.
Jika nilai start_position atau occurrence bukan konstanta BIGINT atau kurang dari atau sama dengan 0, kesalahan dikembalikan.
Jika nilai source, pattern, start_position, occurrence, atau return_option adalah NULL, NULL dikembalikan.
Contoh
Contoh 1: Mengembalikan posisi awal kemunculan ke-
2dari substring yang sesuai dengano[[:alpha:]]{1}dalam stringi love www.taobao.com, dimulai dari posisi3. Pernyataan sampel:-- Mengembalikan 14. select regexp_instr('i love www.taobao.com', 'o[[:alpha:]]{1}', 3, 2);Contoh 2: Mengembalikan posisi akhir kemunculan ke-
keduadari substring yang sesuai dengano[[:alpha:]]{1}dalam stringi love www.taobao.com. Pencarian dimulai dari karakter ke-tiga. Pernyataan sampel:-- Mengembalikan 16. select regexp_instr('i love www.taobao.com', 'o[[:alpha:]]{1}', 3, 2, 1);Contoh 3: Parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select regexp_instr('i love www.taobao.com', null, 3, 2);
REGEXP_REPLACE
Sintaksis
string regexp_replace(string <source>, string <pattern>, string <replace_string>[, bigint <occurrence>])CatatanUntuk tipe data yang kompatibel Hive, fungsi
REGEXP_REPLACEmengikuti spesifikasi ekspresi reguler Java. Untuk tipe data 1.0 dan 2.0, mengikuti spesifikasi MaxCompute.Deskripsi
Mengganti substring yang sesuai dengan pattern pada posisi yang ditentukan oleh occurrence dalam string source dengan replace_string dan mengembalikan hasilnya.
Parameter
source: Wajib. Nilai bertipe STRING. Ini adalah string sumber yang akan dimodifikasi.
pattern: Wajib. Konstanta STRING atau ekspresi reguler. Ini adalah pola yang akan dicocokkan. Untuk informasi lebih lanjut tentang aturan ekspresi reguler, lihat Pencocokan string RLIKE. Jika pattern kosong, kesalahan dikembalikan.
replace_string: Wajib. Nilai bertipe STRING. Ini adalah string yang menggantikan substring yang sesuai dengan pattern.
CatatanJika replace_string adalah string kosong, fungsi menghapus substring yang sesuai dengan pattern.
replace_string dapat berisi referensi balik dalam format \n untuk memasukkan substring yang sesuai dengan grup penangkapan ke-n dalam pattern. Nilai n dapat berupa bilangan bulat dari 1 hingga 9. \0 memasukkan seluruh substring yang sesuai dengan pattern. Anda harus meng-escape backslash, seperti \\1, atau menggunakan string mentah, seperti R'(\1)'.
occurrence: Opsional. Konstanta bertipe BIGINT, yang harus lebih besar dari atau sama dengan 0. Nilai parameter ini menunjukkan bahwa string yang sesuai dengan pola yang ditentukan pada kemunculan ke-n yang ditentukan oleh occurrence diganti dengan replace_string. Jika parameter ini diatur ke 0, semua substring yang sesuai dengan pola yang ditentukan diganti. Jika bertipe data lain atau kurang dari 0, kesalahan dikembalikan. Nilai default: 0.
Nilai kembali
Nilai bertipe STRING dikembalikan. Nilai kembali ditentukan oleh aturan berikut:
Jika Anda mereferensikan grup yang tidak ada, hasilnya tidak terdefinisi.
Jika replace_string adalah NULL dan ditemukan kecocokan untuk pattern, NULL dikembalikan.
Jika replace_string adalah NULL dan pattern tidak cocok, fungsi mengembalikan string asli.
Jika source, pattern, atau occurrence adalah NULL, NULL dikembalikan.
Contoh
Contoh 1: Ganti substring berdasarkan aturan yang ditentukan.
-- Mengembalikan Abcd. select regexp_replace("abcd", "a", "A", 0); -- Mengembalikan bcd. select regexp_replace("abcd", "a", "", 0); -- Mengembalikan 19700101. select regexp_replace("1970-01-01", "-", "", 0); -- Mengembalikan abc. select regexp_replace("a1b2c3", "[0-9]", "", 0); -- Mengembalikan a1b2c. select regexp_replace("a1b2c3", "[0-9]", "", 3);Contoh 2: Ganti semua kecocokan untuk pola
([[:digit:]]{3})\\.([[:digit:]]{3})\\.([[:digit:]]{4})dalam string123.456.7890dengan(\\1)\\2-\\3. Pernyataan sampel:-- Mengembalikan (123)456-7890. select regexp_replace('123.456.7890', '([[:digit:]]{3})\\.([[:digit:]]{3})\\.([[:digit:]]{4})', '(\\1)\\2-\\3', 0);Contoh 3: Ganti substring yang sesuai dengan pola dalam string
abcdberdasarkan aturan yang ditentukan. Pernyataan sampel:-- Mengembalikan a b c d. select regexp_replace('abcd', '(.)', '\\1 ', 0); -- Mengembalikan a bcd. select regexp_replace('abcd', '(.)', '\\1 ', 1); -- Mengembalikan d. select regexp_replace("abcd", "(.*)(.)$", "\\2", 0);Contoh 4: Tabel url_set berisi kolom URL dengan nilai dalam format
www.simple@xxx.com. Bagianxxxunik untuk setiap baris. Contoh ini mengganti semua karakter setelahwww. Pernyataan sampel:-- Mengembalikan wwwtest. select regexp_replace(url,'(www)(.*)','wwwtest',0) from url_set;Contoh 5: Parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select regexp_replace('abcd', '(.)', null, 0);Contoh 6: Referensi grup yang tidak ada. Pernyataan sampel:
-- Pola hanya mendefinisikan satu grup; referensi grup kedua tidak ada. -- Hindari penggunaan ini; hasilnya tidak terdefinisi. regexp_replace("abcd", "(.)", "\\2", 0) = "" atau "abcd" -- Pola tidak memiliki grup; \1 mereferensikan grup yang tidak ada. -- Hindari penggunaan ini; hasilnya tidak terdefinisi. regexp_replace("abcd", "a", "\\1", 0) = "bcd" atau "abcd"
REGEXP_SUBSTR
Sintaksis
string regexp_substr(string <source>, string <pattern>[, bigint <start_position>[, bigint <occurrence>]])Deskripsi
Mengembalikan substring dari posisi start_position dalam string source yang sesuai dengan pattern untuk kemunculan ke-occurrence.
Parameter
source: Wajib. Tipe STRING. String yang akan dicari.
pattern: Wajib. Konstanta STRING atau ekspresi reguler. Pola yang akan dicocokkan. Sintaksis ekspresi reguler dijelaskan dalam Pencocokan string RLIKE.
start_position: Opsional. Konstanta BIGINT. Nilainya harus lebih besar dari 0. Jika Anda tidak menentukan parameter ini, nilai default adalah 1, yang menunjukkan bahwa pencarian dimulai dari karakter pertama string source.
occurrence: Opsional. Konstanta BIGINT. Nilainya harus lebih besar dari 0. Nilai default adalah 1, yang menunjukkan kecocokan pertama.
Nilai kembali
Mengembalikan STRING. Nilai kembali mengikuti aturan berikut:
Jika pattern kosong, terjadi kesalahan.
Jika tidak ditemukan kecocokan, mengembalikan NULL.
Jika start_position atau occurrence bukan BIGINT atau kurang dari atau sama dengan 0, terjadi kesalahan.
Jika source, pattern, start_position, atau occurrence adalah NULL, mengembalikan NULL.
Contoh
Contoh 1: Mengembalikan substring yang sesuai dengan pola yang ditentukan dalam
I love aliyun very much. Pernyataan sampel:-- Mengembalikan aliyun. select regexp_substr('I love aliyun very much', 'a[[:alpha:]]{5}'); -- Mengembalikan have. select regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 1); -- Mengembalikan 2. select regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 2);Contoh 2: Salah satu parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select regexp_substr('I love aliyun very much', null);
REPEAT
Sintaksis
string repeat(string <str>, bigint <n>)Deskripsi
Mengembalikan string str yang diulang sebanyak n kali.
Parameter
str: wajib. Tipe STRING. Jika input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, secara implisit dikonversi ke STRING.
n: wajib. Tipe BIGINT. Ukuran nilai tidak boleh melebihi 2 MB.
Nilai kembali
Mengembalikan nilai bertipe STRING. Nilai kembali mengikuti aturan berikut:
Jika str bukan bertipe STRING, BIGINT, DOUBLE, DECIMAL, atau DATETIME, kesalahan dikembalikan.
Jika n kosong, kesalahan dikembalikan.
Jika str atau n adalah NULL, NULL dikembalikan.
Contoh
Contoh 1: Ulangi string
abcsebanyak5kali. Pernyataan sampel:-- Mengembalikan abcabcabcabcabc. select repeat('abc', 5);Contoh 2: Salah satu parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select repeat('abc', null);
REPLACE
Sintaksis
string replace(string <str>, string <old>, string <new>)Deskripsi
Mengganti semua kemunculan old dengan new dalam str dan mengembalikan str yang telah dimodifikasi. Jika tidak ditemukan kecocokan, str asli dikembalikan. Fungsi ini merupakan fungsi ekstensi MaxCompute V2.0.
Parameter
str: wajib. Tipe STRING. String sumber.
old: Wajib. String yang akan dibandingkan.
new: wajib. Tipe STRING. String pengganti.
Nilai kembali
Mengembalikan nilai bertipe STRING. Jika salah satu parameter input adalah NULL, NULL dikembalikan.
Contoh
Contoh 1: Ganti semua kemunculan substring
ababdengan12dalam stringababab. Pernyataan sampel:-- Mengembalikan 12ab. select replace('ababab','abab','12');Contoh 2: Salah satu parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select replace('123abab456ab',null,'abab');
REVERSE
Sintaksis
string reverse(string <str>)Deskripsi
Mengembalikan kebalikan dari string str.
Parameter
str: Wajib. Parameter bertipe STRING. Jika input adalah nilai BIGINT, DOUBLE, DECIMAL, atau DATETIME, secara implisit dikonversi ke tipe STRING.
Nilai kembali
Mengembalikan nilai bertipe STRING. Aturan berikut berlaku:
Jika tipe data str bukan STRING, BIGINT, DOUBLE, DECIMAL, atau DATETIME, kesalahan dikembalikan.
Jika str adalah NULL, NULL dikembalikan.
Contoh
Contoh 1: Balikkan string
I love aliyun very much. Pernyataan sampel:-- Mengembalikan hcum yrev nuyila evol I. select reverse('I love aliyun very much');Contoh 2: Parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select reverse(null);
RPAD
Sintaksis
string rpad(string <str1>, int <length>, string <str2>)Deskripsi
Menambahkan padding ke kanan string str1 hingga length karakter menggunakan string padding str2. Fungsi ini merupakan ekstensi dalam MaxCompute V2.0.
Parameter
str1: wajib. Tipe STRING. String yang akan ditambahkan padding di kanan.
length: wajib. Tipe INT. Harus lebih besar dari atau sama dengan 0. Menentukan jumlah karakter dalam hasil yang dipadding.
str2 (wajib): String yang digunakan untuk padding.
Nilai kembali
Mengembalikan tipe STRING. Nilai kembali mengikuti aturan berikut:
Jika length kurang dari panjang str1, mengembalikan karakter length paling kiri dari str1.
Jika length adalah 0, mengembalikan string kosong.
Jika tidak ada parameter input atau salah satu parameter input adalah NULL, mengembalikan NULL.
Contoh
Contoh 1: Tambahkan padding ke kanan string
abcdefghhingga 10 karakter menggunakan string padding12. Pernyataan sampel:-- Mengembalikan abcdefgh12. select rpad('abcdefgh', 10, '12');Contoh 2: Tambahkan padding ke kanan string
abcdefghhingga 5 karakter menggunakan string padding12. Pernyataan sampel:-- Mengembalikan abcde. select rpad('abcdefgh', 5, '12');Contoh 3: length adalah 0. Pernyataan sampel:
-- Mengembalikan string kosong. select rpad('abcdefgh' ,0, '12');Contoh 4: Salah satu parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select rpad(null ,0, '12');
RTRIM
Sintaksis
string rtrim(string <str>[, <trimChars>]) string trim(trailing [<trimChars>] from <str>)Deskripsi
Menghapus karakter dari ujung kanan str:
Jika trimChars tidak ditentukan, spasi dipangkas secara default.
Jika trimChars ditentukan, karakter dalam trimChars diperlakukan sebagai koleksi. Substring terpanjang dari ujung kanan str yang seluruhnya terdiri dari karakter dari koleksi trimChars dihapus.
Parameter
str: wajib. Tipe STRING. String yang akan dipangkas. Jika input bertipe BIGINT, DECIMAL, DOUBLE, atau DATETIME, secara implisit dikonversi ke STRING.
trimChars: opsional. Tipe STRING. Karakter yang akan dihapus.
Nilai kembali
Mengembalikan tipe STRING. Nilai kembali mengikuti aturan berikut:
Jika str bukan bertipe STRING, BIGINT, DOUBLE, DECIMAL, atau DATETIME, mengembalikan kesalahan.
Jika str atau trimChars adalah NULL, mengembalikan NULL.
Contoh
Contoh 1: Hapus spasi di akhir dari string
yxTxyomxx. Pernyataan sampel:-- Mengembalikan yxTxyomxx. select rtrim(' yxTxyomxx '); -- Setara dengan: select trim(trailing from ' yxTxyomxx ');Contoh 2: Hapus semua karakter di akhir dari string
yxTxyomxxyang termasuk dalam himpunanxy.-- Mengembalikan yxTxyom. Setiap x atau y di akhir dihapus. select rtrim('yxTxyomxx', 'xy'); -- Setara dengan: select trim(trailing 'xy' from 'yxTxyomxx');Contoh 3: Parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select rtrim(null); select rtrim('yxTxyomxx', null);
SOUNDEX
Sintaksis
string soundex(string <str>)Deskripsi
Mengonversi string standar menjadi string SOUNDEX.
Parameter
str: Wajib. String yang akan dikonversi. Parameter ini bertipe STRING. Fungsi ini merupakan ekstensi dalam MaxCompute V2.0.
Nilai kembali
Nilai kembali bertipe STRING. Jika str adalah NULL, fungsi mengembalikan NULL.
Contoh
Contoh 1: Mengonversi string
hellomenjadi string SOUNDEX. Pernyataan contoh:-- Mengembalikan H400. select soundex('hello');Contoh 2: Parameter input adalah NULL. Pernyataan contoh:
-- Mengembalikan NULL. select soundex(null);
SPACE
Sintaksis
string space(bigint <n>)Deskripsi
Menghasilkan string yang terdiri dari n spasi.
Parameter
n: wajib. Tipe BIGINT. Ukuran nilai tidak boleh melebihi 2 MB.
Nilai kembali
Mengembalikan STRING. Nilai kembali mengikuti aturan berikut:
Jika n kosong, kesalahan dikembalikan.
Jika n adalah NULL, NULL dikembalikan.
Contoh
-- Mengembalikan 10. select length(space(10));
SPLIT
Sintaksis
ARRAY<STRING> SPLIT(STRING <source>, STRING <delimiter>[, BOOLEAN <trimTailEmpty>]) -- Contoh standar. -- Mengembalikan ["a","b","c"]. SELECT SPLIT('a,b,c', ',');Parameter
source: Wajib. String yang akan dipisahkan. Tipe datanya STRING.
delimiter: Wajib. Pemisah yang digunakan untuk memisahkan string. Parameter ini mendukung ekspresi reguler. Tipe datanya STRING.
trimTailEmpty: Opsional. Menentukan apakah akan menyimpan string kosong di akhir. Nilai default adalah
true. Jika Anda mengatur parameter ini kefalse, string kosong di akhir disimpan. Tipe datanya BOOLEAN.
Nilai kembali
Mengembalikan nilai bertipe ARRAY<STRING>.
Contoh
Contoh 1: Pisahkan string menggunakan koma.
-- Mengembalikan ["a","b","c"]. SELECT SPLIT('a,b,c', ',');Contoh 2: Tangani kasus di mana pemisah tidak ada.
-- Mengembalikan ["a,b,c"]. SELECT SPLIT('a,b,c', ':');Contoh 3: Tangani pemisah berturut-turut. Hal ini membuat elemen string kosong.
-- Mengembalikan ["a","","b"]. SELECT SPLIT('a,,b', ',');Contoh 4: Gunakan pemisah multi-karakter.
-- Mengembalikan ["a","b","c"]. SELECT SPLIT('a::b::c', '::');Contoh 5: Simpan string kosong di akhir.
-- Secara default, string kosong di akhir tidak dikembalikan. -- Mengembalikan ["a","b","c"]. SELECT SPLIT('a,b,c,,', ','); -- Kembalikan string kosong di akhir. -- Mengembalikan ["a","b","c","",""]. SELECT SPLIT('a,b,c,,', ',', false);Contoh 6: Gunakan karakter escape atau karakter khusus sebagai pemisah.
-- Pisahkan dengan line feed. -- Mengembalikan ["hello","world"]. SELECT SPLIT('hello\nworld', '\n'); -- Pisahkan dengan tab. -- Mengembalikan ["a","b","c"]. SELECT SPLIT('a\tb\tc', '\t'); -- Pisahkan dengan carriage return. -- Mengembalikan ["line1","line2"]. SELECT SPLIT('line1\rline2', '\r'); -- Escape backslash. -- Mengembalikan ["a","b","c"]. SELECT SPLIT('a\\b\\c', '\\\\');Contoh 7: Tangani input NULL.
-- Jika salah satu parameter adalah NULL, fungsi mengembalikan NULL. -- Mengembalikan NULL. SELECT SPLIT(NULL, ','); -- Mengembalikan NULL. SELECT SPLIT('a,b,c', NULL); -- Mengembalikan NULL. SELECT SPLIT('a,b,c', ',', NULL);
SPLIT_PART
Sintaksis
string split_part(string <str>, string <separator>, bigint <start>[, bigint <end>])Deskripsi
Memisahkan string str menggunakan delimiter separator dan mengembalikan substring dari bagian start hingga end (interval tertutup).
Parameter
str: wajib. Tipe STRING. String yang akan dipisahkan. Jika input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, secara implisit dikonversi ke STRING.
separator: wajib. Konstanta STRING. Delimiter (satu karakter atau string).
start: wajib. Konstanta BIGINT, harus lebih besar dari 0. Nomor bagian awal (dihitung dari 1).
end: konstanta BIGINT yang lebih besar dari atau sama dengan start. Parameter ini menentukan nomor segmen akhir yang akan dikembalikan. Jika parameter ini tidak ditentukan, nilainya default ke nilai start, dan hanya segmen yang ditentukan oleh start yang dikembalikan.
Deskripsi Nilai Kembali
Mengembalikan STRING. Nilai kembali mengikuti aturan berikut:
Jika start melebihi jumlah bagian aktual (misalnya, ada 6 bagian tetapi start > 6), string kosong dikembalikan.
Jika separator tidak ditemukan dalam str dan start = 1, seluruh str dikembalikan. Jika str kosong, string kosong dikembalikan.
Jika separator kosong, str asli dikembalikan.
Jika end melebihi jumlah bagian, substring dari start hingga bagian terakhir dikembalikan.
Jika str bukan bertipe STRING, BIGINT, DOUBLE, DECIMAL, atau DATETIME, kesalahan dikembalikan.
Jika separator bukan konstanta STRING, kesalahan dikembalikan.
Jika start atau end bukan konstanta BIGINT, kesalahan dikembalikan.
Jika salah satu parameter kecuali separator adalah NULL, NULL dikembalikan.
Contoh
Contoh 1: Pisahkan string
a,b,c,dmenggunakan delimiter,dan kembalikan bagian yang ditentukan. Pernyataan sampel:-- Mengembalikan a. select split_part('a,b,c,d', ',', 1); -- Mengembalikan a,b. select split_part('a,b,c,d', ',', 1, 2);Contoh 2: start melebihi jumlah bagian aktual. Pernyataan sampel:
-- Mengembalikan string kosong. select split_part('a,b,c,d', ',', 10);Contoh 3: separator tidak ditemukan dalam str. Pernyataan sampel:
-- Mengembalikan a,b,c,d. select split_part('a,b,c,d', ':', 1); -- Mengembalikan string kosong. select split_part('a,b,c,d', ':', 2);Contoh 4: separator kosong. Pernyataan sampel:
-- Mengembalikan a,b,c,d. select split_part('a,b,c,d', '', 1);Contoh 5: end melebihi jumlah bagian aktual. Pernyataan sampel:
-- Mengembalikan b,c,d. select split_part('a,b,c,d', ',', 2, 6);Contoh 6: Salah satu parameter input kecuali separator adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select split_part('a,b,c,d', ',', null);
SUBSTR
Sintaksis
string substr(string <str>, bigint <start_position>[, bigint <length>])Deskripsi
Mengembalikan substring dari str yang dimulai dari start_position dengan panjang length.
Parameter
str: wajib. Tipe STRING. Jika input bertipe BIGINT, DECIMAL, DOUBLE, atau DATETIME,secara implisit dikonversi ke STRING.
start_position: wajib. Tipe BIGINT. Posisi awal default adalah 1.
Versi tipe data kompatibel Hive: Jika start_position=0, berperilaku sama seperti posisi 1.
Versi tipe data 1.0 dan 2.0: Jika start_position=0, mengembalikan NULL.
length: opsional. Tipe BIGINT. Panjang substring harus >0.
PentingJika
setproject odps.function.strictmode=false: length<0 mengembalikan kosong.Jika
setproject odps.function.strictmode=true: length<0 mengembalikan kesalahan.
Nilai kembali
Mengembalikan tipe STRING. Nilai kembali mengikuti aturan berikut:
Jika str bukan bertipe STRING, BIGINT, DECIMAL, DOUBLE, atau DATETIME, mengembalikan kesalahan.
Jika length bukan bertipe BIGINT atau ≤0, mengembalikan kesalahan.
Jika Anda menghilangkan length, substring diperluas hingga akhir str.
Jika str, start_position, atau length adalah NULL, mengembalikan NULL.
Contoh
Contoh 1: Mengembalikan substring dari
abcdari posisi yang ditentukan dengan panjang yang ditentukan. Pernyataan sampel:-- Mengembalikan bc. select substr('abc', 2); -- Mengembalikan b. select substr('abc', 2, 1); -- Mengembalikan bc. select substr('abc',-2 , 2);Contoh 2: Saat parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select substr('abc', null);
SUBSTRING
Sintaksis
string substring(string|binary <str>, int <start_position>[, int <length>])Deskripsi
Mengembalikan substring dari str yang dimulai dari start_position dengan length.
Parameter
str: wajib. Parameter ini bertipe STRING atau BINARY.
start_position: wajib. Parameter ini bertipe INT. Posisi awal berbasis 1. Jika start_position adalah 0, string kosong dikembalikan. Jika start_position bernilai negatif, posisi dihitung mundur dari akhir string. Dalam hal ini, -1 merujuk pada karakter terakhir, dan penghitungan dilanjutkan mundur secara berurutan.
length: opsional. Parameter ini bertipe BIGINT. Panjang substring harus lebih besar dari 0.
Nilai kembali
Nilai kembali bertipe STRING. Mengikuti aturan berikut:
Jika str bukan bertipe STRING atau BINARY, kesalahan dikembalikan.
Jika length bukan bertipe BIGINT atau kurang dari atau sama dengan 0, kesalahan dikembalikan.
Ketika parameter length dihilangkan, substring hingga akhir str dikembalikan.
Jika str, start_position, atau length adalah NULL, NULL dikembalikan.
Contoh
Contoh 1: Contoh ini mengembalikan substring dari
abcdari posisi yang ditentukan dengan panjang yang ditentukan. Pernyataan sampel:-- Mengembalikan bc. select substring('abc', 2); -- Mengembalikan b. select substring('abc', 2, 1); -- Mengembalikan bc. select substring('abc',-2,2); -- Mengembalikan ab. select substring('abc',-3,2); -- Mengembalikan 001. substring(bin(2345), 2, 3);Contoh 2: Contoh ini menunjukkan kasus di mana salah satu parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select substring('abc', null, null);
SUBSTRING_INDEX
Sintaksis
string substring_index(string <str>, string <separator>, int <count>)Deskripsi
Fungsi ini mengekstrak substring dari string str, baik sebelum maupun sesudah kemunculan ke-count dari delimiter. Jika count bernilai positif, pencarian delimiter dimulai dari kiri. Jika count bernilai negatif, pencarian dimulai dari kanan. Fungsi ini merupakan fungsi ekstensi MaxCompute V2.0.
Parameter
str: wajib. Tipe STRING. Ini adalah string tempat ekstraksi dilakukan.
separator: wajib. Delimiter bertipe STRING.
count: Wajib. Nilai INT yang menentukan posisi delimiter.
Nilai kembali
Fungsi mengembalikan nilai bertipe STRING. Jika salah satu parameter input adalah NULL, fungsi mengembalikan NULL.
Contoh
Contoh 1: Ekstrak dari string
https://www.alibabacloud.com. Pernyataan sampel:-- Mengembalikan https://www.alibabacloud. select substring_index('https://www.alibabacloud.com', '.', 2); -- Mengembalikan alibabacloud.com. select substring_index('https://www.alibabacloud.com', '.', -2);Contoh 2: Parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select substring_index('https://www.alibabacloud.com', null, 2);
TO_CHAR
Sintaksis
string to_char(boolean <value>) string to_char(bigint <value>) string to_char(double <value>) string to_char(decimal <value>)Deskripsi
Mengonversi nilai bertipe BOOLEAN, BIGINT, DECIMAL, atau DOUBLE ke representasi STRING-nya.
Parameter
value: wajib. Nilai bertipe BOOLEAN, BIGINT, DECIMAL, atau DOUBLE.
Nilai kembali
Mengembalikan nilai bertipe STRING. Nilai kembali mengikuti aturan berikut:
Jika value bukan bertipe BOOLEAN, BIGINT, DECIMAL, atau DOUBLE, fungsi mengembalikan kesalahan.
Jika value adalah NULL, fungsi mengembalikan NULL.
Contoh
Contoh 1: Konversi nilai ke representasi STRING. Pernyataan sampel:
-- Mengembalikan 123. select to_char(123); -- Mengembalikan TRUE. select to_char(true); -- Mengembalikan 1.23. select to_char(1.23);Contoh 2: Parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select to_char(null);
TO_JSON
-
Sintaksis
string to_json(<expr>) -
Deskripsi
Mengonversi ekspresi yang ditentukan oleh expr bertipe data kompleks tertentu menjadi string JSON.
-
Parameter
expr: wajib. Ekspresi bertipe ARRAY, MAP, atau STRUCT.
CatatanJika ekspresi input bertipe STRUCT (
struct<key1:value1, key2:value2>), perhatikan poin berikut:-
Semua kunci diubah menjadi huruf kecil saat Anda mengonversi ekspresi menjadi string JSON.
-
Jika
valueadalah null, pasangan kunci-nilai tempatvaluetersebut berada tidak disertakan dalam string JSON yang dikembalikan. Misalnya, jikavalue2adalah null,key2:value2tidak disertakan dalam string JSON yang dikembalikan.
-
-
Nilai kembali
String JSON dikembalikan.
-
Contoh
-
Contoh 1: Mengonversi ekspresi bertipe data kompleks tertentu menjadi string JSON. Pernyataan sampel:
-- Nilai kembali adalah {"a":1,"b":2}. select to_json(named_struct('a', 1, 'b', 2)); -- Nilai kembali adalah {"time":"26/08/2015"}. select to_json(named_struct('time', "26/08/2015")); -- Nilai kembali adalah [{"a":1,"b":2}]. select to_json(array(named_struct('a', 1, 'b', 2))); -- Nilai kembali adalah {"a":{"b":1}}. select to_json(map('a', named_struct('b', 1))); -- Nilai kembali adalah {"a":1}. select to_json(map('a', 1)); -- Nilai kembali adalah [{"a":1}]. select to_json(array((map('a', 1)))); -
Contoh 2: Ekspresi input bertipe STRUCT. Pernyataan sampel:
-- Nilai kembali adalah {"a":"B"}. Jika ekspresi bertipe STRUCT dikonversi menjadi string JSON, semua kunci diubah menjadi huruf kecil. select to_json(named_struct("A", "B")); -- Nilai kembali adalah {"k2":"v2"}. Pasangan kunci-nilai tempat null berada tidak disertakan dalam string JSON yang dikembalikan. select to_json(named_struct("k1", cast(null as string), "k2", "v2"));
-
TOLOWER
Sintaksis
string tolower(string <source>)Deskripsi
Mengonversi huruf kapital bahasa Inggris dalam string source menjadi huruf kecil.
Parameter
source: wajib. Nilai bertipe STRING. Jika input adalah nilai BIGINT, DOUBLE, DECIMAL, atau DATETIME, secara implisit dikonversi ke tipe STRING. Fungsi ini hanya beroperasi pada karakter bahasa Inggris.
Nilai kembali
Mengembalikan nilai bertipe STRING. Nilai yang dikembalikan didasarkan pada aturan berikut:
Jika tipe data source bukan STRING, BIGINT, DOUBLE, DECIMAL, atau DATETIME, kesalahan dikembalikan.
Jika source adalah NULL, NULL dikembalikan.
Contoh
Contoh 1: Mengonversi huruf kapital menjadi huruf kecil. Pernyataan sampel:
-- Mengembalikan abcd. select tolower('aBcd');Contoh 2: Parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select tolower(null);
TOUPPER
Sintaksis
string toupper(string <source>)Deskripsi
Mengonversi karakter huruf kecil dalam string source menjadi karakter huruf kapital yang sesuai.
Parameter
source: wajib. Tipe STRING. Jika input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, secara implisit dikonversi ke STRING. Hanya mendukung karakter bahasa Inggris.
Nilai kembali
Mengembalikan nilai bertipe STRING. Nilai yang dikembalikan didasarkan pada aturan berikut:
Jika tipe data source bukan STRING, BIGINT, DOUBLE, DECIMAL, atau DATETIME, kesalahan dikembalikan.
Jika source adalah NULL, NULL dikembalikan.
Contoh
Contoh 1: Mengonversi huruf kecil menjadi huruf kapital. Pernyataan sampel:
-- Mengembalikan ABCD. select toupper('aBcd');Contoh 2: Parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select toupper(null);
TRANSLATE
Sintaksis
string translate(string|varchar <str1>, string|varchar <str2>, string|varchar <str3>)Deskripsi
Mengganti setiap karakter dalam str1 yang muncul dalam str2 dengan karakter yang sesuai dalam str3. Jika tidak ditemukan kecocokan, tidak terjadi penggantian. Fungsi ini merupakan ekstensi dalam MaxCompute V2.0.
Nilai kembali
Mengembalikan STRING. Jika salah satu parameter input adalah NULL, fungsi mengembalikan NULL.
Contoh
Contoh 1: Ganti setiap karakter dalam
abababyang muncul dalamababdengan karakter yang sesuai dalamcd. Pernyataan sampel:-- Mengembalikan cdcdcd. select translate('ababab','abab','cd');Contoh 2: Ganti setiap karakter dalam
abababyang muncul dalamababdengan karakter yang sesuai dalamcdefg. Pernyataan sampel:-- Mengembalikan cdcdcd. select translate('ababab','abab','cdefg');Contoh 3: Salah satu parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select translate('ababab','cd',null);
TRIM
Sintaksis
string trim(string <str>[,<trimChars>]) string trim([BOTH] [<trimChars>] from <str>)Deskripsi
Menghapus karakter dari kedua ujung str:
Jika Anda tidak menentukan trimChars, fungsi menghapus spasi secara default.
Jika Anda menentukan trimChars, fungsi memperlakukan karakter dalam trimChars sebagai himpunan dan menghapus substring terpanjang yang mungkin yang hanya terdiri dari karakter dari himpunan ini dari kedua ujung kiri dan kanan str.
Parameter
str: wajib. Tipe STRING. String yang akan dipangkas. Jika input bertipe BIGINT, DECIMAL, DOUBLE, atau DATETIME, secara implisit dikonversi ke STRING.
trimChars: opsional. Tipe STRING. Karakter yang akan dihapus.
Nilai kembali
Mengembalikan tipe STRING. Nilai kembali mengikuti aturan berikut:
Jika str bukan bertipe STRING, BIGINT, DOUBLE, DECIMAL, atau DATETIME, mengembalikan kesalahan.
Jika str atau trimChars adalah NULL, mengembalikan NULL.
Contoh
Contoh 1: Hapus spasi dari kedua ujung string
yxTxyomxx. Pernyataan sampel:-- Mengembalikan yxTxyomxx. select trim(' yxTxyomxx '); -- Setara dengan: select trim(both from ' yxTxyomxx '); select trim(from ' yxTxyomxx ');Contoh 2: Hapus semua karakter dari kedua ujung string
yxTxyomxxyang termasuk dalam himpunanxy.-- Mengembalikan Txyom. Setiap x atau y di kedua ujung dihapus. select trim('yxTxyomxx', 'xy'); -- Setara dengan: select trim(both 'xy' from 'yxTxyomxx'); select trim('xy' from 'yxTxyomxx');Contoh 3: Parameter input adalah NULL. Pernyataan sampel:
-- Mengembalikan NULL. select trim(null); select trim('yxTxyomxx', null);
URL_DECODE
Sintaksis
string url_decode(string <input>[, string <encoding>])Deskripsi
Mengonversi string input dari format
application/x-www-form-urlencoded MIMEke karakter standar. Fungsi ini merupakan kebalikan dariurl_encode. Aturan encoding adalah sebagai berikut:a–z dan A–Z tetap tidak berubah.
Titik (.), tanda hubung (-), tanda bintang (*), dan garis bawah (_) tetap tidak berubah.
Tanda plus (+) dikonversi menjadi spasi.
Urutan dalam format
%xydikonversi menjadi nilai byte. Byte berurutan didekode menjadi string menggunakan nama encoding yang ditentukan.Semua karakter lain tetap tidak berubah.
Parameter
input: Parameter ini wajib dan bertipe STRING. Ini merepresentasikan string input.
encoding: Parameter ini opsional dan menentukan format encoding. Mendukung format seperti GBK dan UTF-8. Jika tidak ditentukan, encoding default adalah UTF-8.
Nilai kembali
Fungsi ini mengembalikan tipe STRING yang di-encode UTF-8. Jika parameter input atau encoding adalah NULL, fungsi mengembalikan NULL.
Contoh
-- Mengembalikan examplefor url_decode:// (fdsf). select url_decode('%E7%A4%BA%E4%BE%8Bfor+url_decode%3A%2F%2F+%28fdsf%29'); -- Mengembalikan Example for URL_DECODE:// dsf(fasfs). select url_decode('Example+for+url_decode+%3A%2F%2F+dsf%28fasfs%29', 'GBK');
URL_ENCODE
Sintaksis
string url_encode(string <input>[, string <encoding>])Deskripsi
Mengencode string input dalam format
application/x-www-form-urlencoded MIME. Aturan encoding:Huruf a–z dan A–Z tetap tidak berubah.
Titik (.), tanda hubung (-), tanda bintang (*), dan garis bawah (_) tetap tidak berubah.
Spasi dikonversi menjadi tanda plus (+).
Semua karakter lain dikonversi menjadi nilai byte menggunakan encoding yang ditentukan. Setiap byte muncul sebagai
%xy, di manaxyadalah representasi heksadesimal karakter tersebut.
Parameter
input: Wajib. Tipe STRING. String yang akan diinput.
encoding: opsional. Format encoding. Format yang didukung meliputi GBK dan UTF-8. Default adalah UTF-8 jika tidak ditentukan.
Nilai kembali
Mengembalikan STRING. Jika input atau encoding adalah NULL, mengembalikan NULL.
Contoh
-- Mengembalikan %E7%A4%BA%E4%BE%8Bfor+url_encode%3A%2F%2F+%28fdsf%29. select url_encode('examplefor url_encode:// (fdsf)'); -- Mengembalikan Example+for+url_encode+%3A%2F%2F+dsf%28fasfs%29. select url_encode('Example for url_encode:// dsf(fasfs)', 'GBK');
Referensi
Untuk memperluas fungsi bawaan, buat user-defined function (UDF). Untuk informasi lebih lanjut, lihat Ikhtisar.