返回字串str從start_position開始,長度為length的子串。
命令格式
STRING SUBSTR(STRING <str>, BIGINT <start_position>[, BIGINT <length>])參數說明
str:必填。STRING類型。如果輸入為BIGINT、DECIMAL、DOUBLE或DATETIME類型,則會隱式轉換為STRING類型後參與運算。
start_position:必填。BIGINT類型,不同 start_position 值行為說明如下:
start_position值
參數行為說明
1
預設從第一個字元開始
0
在MaxCompute1.0和2.0資料類型版本下,返回Null 字元串。
若執行
SET odps.sql.bigquery.compatible=true;開啟BigQuery相容模式時,從第一個字元開始。在MaxComputeHive相容資料類型版本下,預設從第一個字元開始
負數
預設從最後一個字元開始,若start_position小於-length(指字串str的長度length):
返回Null 字元串。
執行
SET odps.sql.bigquery.compatible=true;開啟BigQuery相容模式時,從第一個字元開始。
length:可選。BIGINT類型,表示子串的長度值,不指定時預設到str最後一個字元。
當length為0時,返回Null 字元串;
當length小於0時,返回Null 字元串。僅在以下flag開啟時,會返回報錯資訊:
執行
SETPROJECT odps.sql.bigquery.compatible=true;開啟BigQuery相容模式時,會返回錯誤。
傳回值說明
返回STRING類型。返回規則如下:
str非STRING、BIGINT、DECIMAL、DOUBLE或DATETIME類型時,返回報錯。
length非BIGINT類型時,返回報錯。
str、start_position或length值為NULL時,返回NULL。
使用樣本
樣本1:返回字串
abc從指定位置開始,指定長度的子串。命令樣本如下。-- 返回bc SELECT SUBSTR('abc', 2); -- 返回b SELECT SUBSTR('abc', 2, 1); -- 返回bc SELECT SUBSTR('abc', -2, 2);樣本2:任一輸入參數為NULL。命令樣本如下。
-- 返回 NULL SELECT SUBSTR('abc', null);樣本3:BigQuery相容模式下,當start_position為0時,與起始位置為1時相同。
-- 返回 apple SET odps.sql.bigquery.compatible=TRUE; SELECT SUBSTR('apple', 0); -- 等效於 SELECT SUBSTR('apple', 1);樣本4:BigQuery相容模式下,當start_position小於-length(指字串str的長度length)時,與起始位置為1時相同。
-- 返回 apple SET odps.sql.bigquery.compatible=TRUE; SELECT SUBSTR('apple', -6); -- 等效於 SELECT SUBSTR('apple', 1);樣本5:BigQuery相容模式下,length值小於0時,會返回錯誤。
-- 報錯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);
相關函數
SUBSTR函數屬於字串函數,更多尋找字串、轉換字串格式的相關函數請參見字串函數。