使用Null 處理從逗號分隔清單中提取第n 個值
當使用REGEXP_SUBSTR() 從逗號中提取第n 個值時-分隔列表,處理空值可能具有挑戰性。為此,需要對正規表示式進行修改。
原始表達式 REGEXP_SUBSTR('1,,3,4,5', '[^,] ', 1, 2) 傳回第二次出現一個或多個非逗號字元。但是,當遇到 null 時,它會將其解釋為新的非空值的開始,並傳回第三項而不是預期的 null。
為了解決這個問題,表達式被修改為允許零或更多非逗號字元:REGEXP_SUBSTR('1,,3,4,5', '(.*?)(,|$)' , 1, 2, NULL, 1)。它透過尋找零個或多個後跟逗號或行尾的字元來標識所需的值,並僅傳回第一個子組(所需的資料)。
此增強型表達式可以正確處理空值,傳回如果第二項為空,則為 null。函數 GET_LIST_ELEMENT() 封裝了此邏輯以便於重複使用:
FUNCTION GET_LIST_ELEMENT(string_in VARCHAR2, element_in NUMBER, delimiter_in VARCHAR2 DEFAULT ',') RETURN VARCHAR2 IS BEGIN RETURN REGEXP_SUBSTR(string_in, '(.*?)(\'||delimiter_in||'|$)', 1, element_in, NULL, 1); END GET_LIST_ELEMENT;
此方法可以容納空值並允許從清單中選擇任何值。
以上是如何從逗號分隔的字串中提取第 n 個值並處理空值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!