Mengembalikan substring dari string str, dimulai pada posisi start_position dengan panjang length.
Sintaks
STRING SUBSTR(STRING <str>, BIGINT <start_position>[, BIGINT <length>])Parameter
str: Wajib. Nilai bertipe STRING. Jika nilai masukan bertipe BIGINT, DECIMAL, DOUBLE, atau DATETIME, maka akan dikonversi secara implisit ke tipe STRING sebelum perhitungan.
start_position: Wajib. Nilai bertipe BIGINT. Perilaku fungsi bervariasi berdasarkan nilai dari start_position:
nilai start_position
Deskripsi
1
Substring dimulai dari karakter pertama secara default.
0
Pada MaxCompute edisi tipe data 1.0 dan edisi tipe data 2.0, string kosong dikembalikan.
Jika Anda menjalankan perintah
SET odps.sql.bigquery.compatible=true;untuk mengaktifkan mode kompatibel BigQuery, substring dimulai dari karakter pertama.Pada MaxCompute edisi tipe data kompatibel Hive, substring dimulai dari karakter pertama secara default.
Bilangan negatif
Substring dimulai dari karakter terakhir secara default. Jika nilai dari start_position kurang dari -panjang (di mana panjang adalah panjang dari string str):
String kosong dikembalikan.
Jika Anda menjalankan perintah
SET odps.sql.bigquery.compatible=true;untuk mengaktifkan mode kompatibel BigQuery, substring dimulai dari karakter pertama.
length: Opsional. Nilai bertipe BIGINT. Parameter ini menentukan panjang substring. Jika tidak ditentukan, fungsi mengembalikan substring dari posisi awal hingga akhir string str.
Jika nilai dari length adalah 0, string kosong dikembalikan.
Jika nilai dari length kurang dari 0, string kosong dikembalikan. Namun, kesalahan akan muncul jika flag berikut diaktifkan:
Jika mode kompatibel BigQuery diaktifkan dengan menjalankan perintah
SETPROJECT odps.sql.bigquery.compatible=true;, kesalahan akan dikembalikan.
Nilai Kembali
Fungsi mengembalikan nilai bertipe STRING. Aturan berikut berlaku:
Jika tipe dari str bukan STRING, BIGINT, DECIMAL, DOUBLE, atau DATETIME, kesalahan akan dikembalikan.
Jika tipe dari length bukan BIGINT, kesalahan akan dikembalikan.
Jika str, start_position, atau length adalah NULL, fungsi mengembalikan NULL.
Contoh
Contoh 1: Mengembalikan substring dengan panjang tertentu dari string
abc, dimulai pada posisi tertentu. Contoh perintah:-- bc dikembalikan. SELECT SUBSTR('abc', 2); -- b dikembalikan. SELECT SUBSTR('abc', 2, 1); -- bc dikembalikan. SELECT SUBSTR('abc', -2, 2);Contoh 2: Parameter masukan adalah NULL. Contoh perintah:
-- NULL dikembalikan. SELECT SUBSTR('abc', null);Contoh 3: Dalam mode kompatibel BigQuery, jika nilai dari start_position adalah 0, hasilnya sama seperti ketika nilainya adalah 1.
-- apple dikembalikan. SET odps.sql.bigquery.compatible=TRUE; SELECT SUBSTR('apple', 0); -- Ini setara dengan pernyataan berikut: SELECT SUBSTR('apple', 1);Contoh 4: Dalam mode kompatibel BigQuery, jika nilai dari start_position kurang dari -panjang (di mana panjang adalah panjang dari string str), hasilnya sama seperti ketika posisi awal adalah 1.
-- apple dikembalikan. SET odps.sql.bigquery.compatible=TRUE; SELECT SUBSTR('apple', -6); -- Ini setara dengan pernyataan berikut: SELECT SUBSTR('apple', 1);Contoh 5: Dalam mode kompatibel BigQuery, jika nilai dari length kurang dari 0, kesalahan akan dikembalikan.
-- Kesalahan berikut dikembalikan: FAILED: ODPS-0130071:[0,0] Semantic analysis exception - physical plan generation failed: SQL Runtime Unretryable Error: ODPS-0121095:Invalid argument - in function substr/substring, unsupported length value -1 SET odps.sql.bigquery.compatible=TRUE; SELECT SUBSTR('apple',1,-1);
Fungsi Terkait
SUBSTR adalah fungsi string. Untuk informasi lebih lanjut tentang fungsi pencarian dan konversi string, lihat Fungsi String.