使用REGEX 和Null 處理從清單中選擇第n 個值
可以使用REGEXP_SUBSTR 從逗號分隔清單中提取第n 個元素(),但遇到空值時可能會失敗。要解決此問題,請考慮以下解決方案:
使用的正規表示式是 (.*?)(,|$),它捕獲第 n 次出現逗號或行尾之前的所有內容。這 。 *?非貪婪模式匹配到達逗號所需的最少字元數。第 n 個子組表示正在搜尋的值。
SELECT REGEXP_SUBSTR('1,,3,4,5', '(.*?)(,|$)', 1, 2, NULL, 1) AS data FROM dual; -- Output: NULL
此方法可確保 null 值傳回為 null,無論它們在清單中的位置為何。
為了增強可重複使用性,請考慮封裝函數中的正規表示式邏輯:
FUNCTION GET_LIST_ELEMENT(string_in VARCHAR2, element_in NUMBER, delimiter_in VARCHAR2 DEFAULT ',') RETURN VARCHAR2 AS BEGIN RETURN REGEXP_SUBSTR(string_in, '(.*?)(\'||delimiter_in||'|$)', 1, element_in, NULL, 1); END GET_LIST_ELEMENT;
使用此函數簡化了提取process:
SELECT GET_LIST_ELEMENT('123,222,,432,555', 4) AS value FROM dual; -- Output: 432
這種方法可以有效地處理空值,並為從逗號分隔清單中提取資料提供通用的解決方案。
以上是如何使用 REGEXP_SUBSTR 安全地從逗號分隔清單中提取第 n 個元素並處理 Null?的詳細內容。更多資訊請關注PHP中文網其他相關文章!