首頁 >資料庫 >mysql教程 >如何從逗號分隔的字串中提取第 n 個值並處理空值?

如何從逗號分隔的字串中提取第 n 個值並處理空值?

Patricia Arquette
Patricia Arquette原創
2025-01-01 05:31:09970瀏覽

How to Extract the nth Value from a Comma-Separated String, Handling Nulls?

使用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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn