Help Center/
Database and Application Migration UGO/
User Guide/
Syntax Conversion/
Risky Custom Functions/
Replacing Custom Oracle Functions with GaussDB Functions/
instr
Updated on 2025-06-07 GMT+08:00
instr
Database Type and Version
- Source database type and version: all Oracle versions
- Target database type and version: GaussDB of versions earlier than V2.0-2.7
Function replacement syntax:
CREATE OR REPLACE FUNCTION dsc_ora_ext.dsc_fn_instr /* 1st param (i_str) is the text expression to search 2nd param (i_substr) is the string to search for 3rd param (i_startpos) is a nonzero INTEGER indicating where in string the function begins the search. When it is negative, then INSTR counts and searches backward from the end of string. Default value is 1. 4th param (i_occurrence) An INTEGER indicating which occurrence of string the function should search for. It must be positive; Default value is 1. */ ( i_str IN TEXT , i_substr IN TEXT , i_startpos IN INTEGER = 1 , i_occurrence IN INTEGER = 1 ) RETURN INTEGER IMMUTABLE AS v_search_str TEXT; v_shift INTEGER := 0; v_pos INTEGER; BEGIN IF i_str IS NULL OR i_substr IS NULL THEN -- if source string or substring is empty RETURN NULL; END IF; IF i_occurrence <= 0 THEN RAISE EXCEPTION 'ERROR-01428: argument -1 is out of range'; END IF; IF i_startpos = 0 THEN RETURN 0; END IF; /* When i_startpos is negative, then the function should count and searches backward from the end of string. */ IF i_startpos < 0 THEN i_str := REVERSE(i_str); i_substr := REVERSE(i_substr); v_pos := -1 * i_startpos; ELSE v_pos := i_startpos; END IF; FOR idx IN 1..i_occurrence LOOP v_shift := v_shift + v_pos; v_search_str := SUBSTR(i_str, v_shift); v_pos := STRPOS(v_search_str, i_substr); IF v_pos = 0 THEN RETURN 0; END IF; END LOOP; IF i_startpos > 0 THEN RETURN v_pos + v_shift - 1; ELSE RETURN LENGTH(i_str) - LENGTH(i_substr) - v_pos - v_shift + 3; END IF; END;
Parent topic: Replacing Custom Oracle Functions with GaussDB Functions
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
The system is busy. Please try again later.
For any further questions, feel free to contact us through the chatbot.
Chatbot