全部產品
Search
文件中心

MaxCompute:INSTR

更新時間:Feb 28, 2024

計運算元串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。表示str2str1中第nth_appearance次匹配的位置。如果nth_appearance為其他類型或小於等於0,則返回報錯。

傳回值說明

返回BIGINT類型。返回規則如下:

  • 如果在str1中未找到str2,則返回0。

  • 如果str2為空白串,則總能匹配成功,例如select instr('abc','');會返回1。

  • str1str2start_positionnth_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函數屬於字串函數,更多尋找字串、轉換字串格式的相關函數請參見字串函數