ホームページ >データベース >mysql チュートリアル >REGEXP_SUBSTR() を使用して NULL を含むカンマ区切りリストから特定の値を確実に抽出する方法

REGEXP_SUBSTR() を使用して NULL を含むカンマ区切りリストから特定の値を確実に抽出する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-29 00:44:13363ブラウズ

How to Reliably Extract Specific Values from Comma-Separated Lists Containing NULLs Using REGEXP_SUBSTR()?

NULL を含むリストから個々の値を選択するための正規表現

問題:

REGEXP_SUBSTR () は失敗しますnull が存在する場合に、カンマ区切りのリストから目的の n 番目の値を取得します。値が null の場合、n 番目の出現として次の null 以外の値を返します。

解決策:

この問題を解決するには、REGEXP_SUBSTR() 式を変更します。

REGEXP_SUBSTR('1,,3,4,5', '(.*?)(,|$)', 1, 2, NULL, 1)

この式は、次のようにして目的のデータを取得します。ステップ:

  1. (.*?): 0 個以上のオプションの文字と一致します。
  2. (,|$): カンマまたは行末のいずれかと一致します。
  3. 1: 最初に一致するグループ (サブグループ) が目的のデータであることを指定します。
  4. 2: 目的のデータを選択する出現を設定します。 n 番目の値。
  5. NULL: 指定された出現に一致するものが見つからない場合は null を返します。

再利用可能な関数:

より単純な場合より便利な使用方法として、この変更された REGEXP_SUBSTR() 式を PL/SQL にカプセル化できます。関数:

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;

使用例:

リスト '123,222,,432,555' から 4 番目の要素を取得するには:

select get_list_element('123,222,,432,555', 4) from dual;

以上がREGEXP_SUBSTR() を使用して NULL を含むカンマ区切りリストから特定の値を確実に抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。