All Products
Search
Document Center

MaxCompute:SUBSTR

Last Updated:Oct 23, 2025

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.