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;
1konumu ilk karakterdir.-
Sıfır (
0):Hive uyumlu veri türü sürümü için ilk karakterden başlar.
BigQuery uyumlu modda (
SET odps.sql.bigquery.compatible=true;)1değeriyle aynı şekilde ilk karakterden başlar.
-
Negatif değer: Sayma dizenin sonundan başlar. Örneğin,
-1son 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 = 0ise boş bir dize döndürür.length < 0ise 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:
strdeğeri STRING, BIGINT, DECIMAL, DOUBLE veya DATETIME değilse.lengthdeğ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.