LOCATE_IN_STRING
LOCATE_IN_STRING 函數會傳回另一個字串 (稱為 source-string) 內字串 (稱為 search-string) 的起始位置。 如果找不到 search-string ,且兩個引數都不是空值,則結果為零。 如果找到 search-string ,則結果是從 1 到 source-string實際長度的數字。 如果指定選用 start ,它會指出 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 設定為字串內的位置。
主變數 POSTION 的值設為 26。SET :POSITION = LOCATE_IN_STRING('Jürgen lives on Hegelstraße','ß',-1); - 從字串開頭搜尋,以尋找字串 '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
