計算字串source從start_position開始,與pattern第occurrence次匹配的子串的起始或結束位置。
命令格式
bigint regexp_instr(string <source>, string <pattern>[,bigint <start_position>[, bigint <occurrence>[, bigint <return_option>]]])
參數說明
source:必填。STRING類型。源字串。
pattern:必填。STRING類型常量或Regex。待匹配的模型。更多Regex編寫規範,請參見Regex規範。pattern為空白串時返回報錯。
start_position:可選。BIGINT類型常量。搜尋的開始位置。不指定時預設值為1。
occurrence:可選。BIGINT類型常量。指定匹配次數,不指定時預設值為1,表示搜尋第一次出現的位置。
return_option:可選。BIGINT類型常量。指定返回的位置。值為0或1,不指定時預設值為0,其他類型或不允許的值會返回報錯。0表示返回匹配的開始位置,1表示返回匹配的結束位置。
傳回值說明
返回BIGINT類型。return_option指定匹配的子串在source中的開始或結束位置。返回規則如下:
如果pattern為空白串,返回報錯。
start_position或occurrence非BIGINT類型或小於等於0時,返回報錯。
source、pattern、start_position、occurrence或return_option值為NULL時,返回NULL。
使用樣本
樣本1:計算字串
i love www.taobao.com
從3
開始,與o[[:alpha:]]{1}
第2
次匹配的子串開始位置。命令樣本如下。--返回14。 select regexp_instr('i love www.taobao.com', 'o[[:alpha:]]{1}', 3, 2);
樣本2:計算字串
i love www.taobao.com
從3
開始,與o[[:alpha:]]{1}
第2
次匹配的子串結束位置。命令樣本如下。--返回16。 select regexp_instr('i love www.taobao.com', 'o[[:alpha:]]{1}', 3, 2, 1);
樣本3:任一輸入參數為NULL。命令樣本如下。
--返回NULL。 select regexp_instr('i love www.taobao.com', null, 3, 2);
相關函數
REGEXP_INSTR函數屬於字串函數,更多尋找字串、轉換字串格式的相關函數請參見字串函數。