LOCATE_IN_STRING

LOCATE_IN_STRING 函數會傳回另一個字串 (稱為 source-string) 內字串 (稱為 search-string) 的起始位置。 如果找不到 search-string ,且兩個引數都不是空值,則結果為零。 如果找到 search-string ,則結果是從 1 到 source-string實際長度的數字。 如果指定選用 start ,它會指出 source-string 中要開始搜尋的字元位置。

讀取語法圖跳過視覺化語法圖LOCATE_IN_STRING(source-string ,搜尋字串 ,開始,實例 )

如果指定選用 start ,它會指出 source-string 中要開始搜尋的字元位置。 如果指定 start ,也可以指定選用 instance 號碼。 instance 引數是用來判定 source-string內特定出現的 search-string 。 每一個唯一實例都可以包含前一個實例中的任何字元,但不能包含前一個實例中的所有字元。

如果 search-string 的長度為零,則函數傳回的結果為 1。 如果 source-string 的長度為零,則函數傳回的結果為 0。 如果兩個條件都不存在,且 search-string 的值等於 source-string值內連續位置的子字串的相同長度, 函數傳回的結果是該子字串在 source-string 值內的起始位置; 否則,函數傳回的結果是 0。

source-string
指定要在其中進行搜尋的來源字串的表示式。 source-string 可以是任何內建數值、日期時間、字串、 變更開始或布林變更結束 表示式。 在評估函數之前,會將數值、日期時間、 變更開始或布林變更結束 引數強制轉型為字串。 如需將數值、日期時間、 變更開始及布林變更結束 轉換為字串的相關資訊,請參閱 VARCHAR
搜尋字串
指定要搜尋之字串的表示式。 search-string 可以是任何內建數值、日期時間、字串、 變更開始或布林變更結束 表示式。 它必須與 source-string相容。 在評估函數之前,會將數值、日期時間、 變更開始或布林變更結束 引數強制轉型為字串。 如需將數值、日期時間、 變更開始及布林變更結束 轉換為字串的相關資訊,請參閱 VARCHAR
開始
指定 source-string 內要開始搜尋的位置的表示式。 start 可以是任何內建數值、字串或圖形字串表示式。 如果值不是 INTEGER 類型,則在評估函數之前會隱含地強制轉型為 INTEGER。

如果整數值大於零,則會從 start 開始搜尋,並針對每一個位置繼續搜尋到字串結尾。 如果整數值小於零,則會從 CHARACTER_LENGTH (source-string) + start + 1 開始搜尋,並針對每一個位置繼續搜尋到字串開頭。

如果未指定 start ,則函數相當於:

  POSITION(  search-string , source-string )

如果 start 為零,則會傳回錯誤。

實例
指定要在 source-string內搜尋哪個 search-string 實例的表示式。 表示式必須傳回內建數值、字串或圖形字串資料類型的值。 如果值不是 INTEGER 類型,則在評估函數之前會隱含地強制轉型為 INTEGER。 如果未指定 instance ,則預設值為 1。 整數值必須大於或等於 1。

在每一個搜尋位置,當位於該位置的子字串及 source-string中搜尋位置右側的 CHARACTER_LENGTH (search-string)-1 值等於 search-string時,會找到相符項。

函數結果為大整數。 結果是 search-string 實例在 source-string內的起始位置。 該值相對於字串的開頭 (不論 start的規格為何)。

如果任何引數可以是空值,則結果可以是空值; 如果任何引數是空值,則結果是空值。

LOCATE_IN_STRING 函數以字元為基礎運作。 由於 LOCATE_IN_STRING 以字串為基礎運作,任何移入和移出字元都不需要完全位於相同位置,其唯一意義是指出哪些字元是 SBCS ,哪些字元是 DBCS。

如果 search-string 的 CCSID 不同於 source-string的 CCSID , 它會轉換成 source-string的 CCSID。

當執行包含 LOCATE_IN_STRING 函數的陳述式,且引數是 SBCS 資料、混合資料或 Unicode 資料時,如果有效的對照順序不是 *HEX ,則會比較集中每一個值的加權值來取得結果。 加權值是根據對照順序。 ICU 對照順序表不能與 LOCATE 函數一起指定。

替代語法: INSTR 可以作為 LOCATE_IN_STRING 的同義字。

範例

  • 透過從字串結尾搜尋,在字串 'J ü r g e n LV on H e g e s t r s t r a s t e' 中尋找字元 'QS' ,並將主變數 POSTION 設定為字串內的位置。
    SET :POSITION = LOCATE_IN_STRING('Jürgen lives on Hegelstraße','ß',-1);
    主變數 POSTION 的值設為 26。
  • 從字串開頭搜尋,以尋找字串 'WINNING' 中出現字元 ' N' 的位置。
    SELECT LOCATE_IN_STRING('WINNING','N',1,3),     
           LOCATE_IN_STRING('WINNING','N',3,2),
           LOCATE_IN_STRING('WINNING','N',3,3)
    FROM SYSIBM.SYSDUMMY1;
    傳回值:
    6     4     6  
  • 從字串結尾搜尋,以尋找字串 'WINNING' 中出現字元 ' N' 的位置。
    SELECT LOCATE_IN_STRING('WINNING','N',-1,3), 
           LOCATE_IN_STRING('WINNING','N',-3,2), 
           LOCATE_IN_STRING('WINNING','N',-3,3)
    FROM SYSIBM.SYSDUMMY1;
    傳回值:
    3     3     0