計運算元串str2在字串str1中的位置。
命令格式
bigint instr(string <str1>, string <str2>[, bigint <start_position>[, bigint <nth_appearance>]])
參數說明
str1:必填。STRING類型。待搜尋的目標字串。如果輸入為BIGINT、DOUBLE、DECIMAL或DATETIME等類型,則會隱式轉換為STRING類型後參與運算;如果輸入不支援轉化成STRING的類型則會返回報錯。
str2:必填。STRING類型。待匹配的子串。如果輸入為BIGINT、DOUBLE、DECIMAL或DATETIME等類型,則會隱式轉換為STRING類型後參與運算;如果輸入不支援轉化成STRING的類型則會返回報錯。
start_position:可選。BIGINT類型,其他類型會返回報錯。表示從str1的第幾個字元開始搜尋,預設起始位置是第一個字元位置1。當start_position為負數時表示開始位置是從字串的結尾往前倒數,最後一個字元是-1,依次往前倒數。
nth_appearance:可選。BIGINT類型,大於0。表示str2在str1中第nth_appearance次匹配的位置。如果nth_appearance為其他類型或小於等於0,則返回報錯。
傳回值說明
返回BIGINT類型。返回規則如下:
如果在str1中未找到str2,則返回0。
如果str2為空白串,則總能匹配成功,例如
select instr('abc','');
會返回1。str1、str2、start_position或nth_appearance值為NULL時,返回NULL。
使用樣本
樣本1:計算字元
e
在字串Tech on the net
中的位置。命令樣本如下。--返回2。 select instr('Tech on the net', 'e');
樣本2:計運算元串
on
在字串Tech on the net
中的位置。命令樣本如下。--返回6。 select instr('Tech on the net', 'on');
樣本3:計算字元
e
在字串Tech on the net
中,從第3個字元開始,第2次出現的位置。命令樣本如下。--返回14。 select instr('Tech on the net', 'e', 3, 2);
樣本4:任一輸入參數為NULL。命令樣本如下。
--返回NULL。 select instr('Tech on the net', null);
相關函數
INSTR函數屬於字串函數,更多尋找字串、轉換字串格式的相關函數請參見字串函數。