Tüm Ürünler
Search
Belge Merkezi

MaxCompute:SUBSTR

Son Güncelleme:Oct 04, 2026

str dizesinin start_position konumundan başlayan bir alt dizesini döndürür. İsteğe bağlı olarak dönen alt dizeyi length kadar karakterle sınırlayabilirsiniz.

Sözdizimi

STRING SUBSTR(STRING <str>, BIGINT <start_position>[, BIGINT <length>])

Parametreler

Parametre Zorunlu Tür Açıklama
str Evet STRING Kaynak dize. BIGINT, DECIMAL, DOUBLE ve DATETIME değerleri işlenmeden önce örtülü olarak STRING türüne dönüştürülür.
start_position Evet BIGINT Alt dizenin başlayacağı konum. Sınır davranışı için Kullanım notları bölümüne bakın.
length Hayır BIGINT Döndürülecek karakter sayısı. Bu parametreyi belirtmezseniz start_position konumundan str dizesinin sonuna kadar tüm karakterler döndürülür.

Kullanım notları

start_position davranışı

  • Pozitif değer: Sayma dizenin başından başlar; 1 konumu ilk karakterdir.

  • Sıfır (0):

    • Veri türü sürümü 1,0 ve 2,0 için boş bir dize döndürür.

    • Hive uyumlu veri türü sürümü için ilk karakterden başlar.

    • BigQuery uyumlu modda (SET odps.sql.bigquery.compatible=true;) 1 değeriyle aynı şekilde ilk karakterden başlar.

  • Negatif değer: Sayma dizenin sonundan başlar. Örneğin, -1 son karakteri ifade eder.

    • Mutlak değer dize uzunluğunu aşarsa (yani, |start_position| > length(str)): Boş bir dize döndürür.

    • BigQuery uyumlu modda boş dize döndürmek yerine ilk karakterden başlar.

length davranışı

  • length = 0 ise boş bir dize döndürür.

  • length < 0 ise boş bir dize döndürür. BigQuery uyumlu modda (SETPROJECT odps.sql.bigquery.compatible=true;) bunun yerine bir hata döndürür.

Dönüş değeri

Bir STRING değeri döndürür.

Aşağıdaki durumlarda bir hata döndürür:

  • str değeri STRING, BIGINT, DECIMAL, DOUBLE veya DATETIME değilse.

  • length değeri BIGINT değilse.

str, start_position veya length NULL ise NULL döndürür.

Örnekler

Temel kullanım

-- Returns 'bc' (starts at position 2, to end of string)
SELECT SUBSTR('abc', 2);

-- Returns 'b' (starts at position 2, length 1)
SELECT SUBSTR('abc', 2, 1);

-- Returns 'bc' (starts 2 characters from the end, length 2)
SELECT SUBSTR('abc', -2, 2);

NULL girişi

-- Returns NULL
SELECT SUBSTR('abc', null);

BigQuery uyumlu mod

Aşağıdaki örnekler BigQuery uyumlu mod gerektirir. Her örneği çalıştırmadan önce SET odps.sql.bigquery.compatible=TRUE; komutuyla bu modu etkinleştirin.

start_position = 0, 1 olarak kabul edilir:

SET odps.sql.bigquery.compatible=TRUE;

-- Returns 'apple' (same as start_position = 1)
SELECT SUBSTR('apple', 0);

start_position aralık dışındaysa (-uzunluk değerinden küçükse) 1. konumdan başlar:

SET odps.sql.bigquery.compatible=TRUE;

-- Returns 'apple' ('apple' has 5 characters, so -6 is out of range)
SELECT SUBSTR('apple', -6);

Negatif length değeri hata döndürür:

SET odps.sql.bigquery.compatible=TRUE;

-- Returns an error:
-- 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
SELECT SUBSTR('apple', 1, -1);

İlgili işlevler

SUBSTR bir dize işlevidir. Dize arama ve dönüştürme işlevleri hakkında daha fazla bilgi için Dize işlevleri konusuna bakın.