REGEX と Null 処理を使用してリストから n 番目の値を選択する
カンマ区切りのリストから n 番目の要素を抽出するには、REGEXP_SUBSTR を使用します。 () ですが、null 値が発生すると失敗する可能性があります。この問題に対処するには、次の解決策を検討してください。
使用される正規表現は (.*?)(,|$) で、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
このアプローチは null 値を効果的に処理し、カンマ区切りリストからデータを抽出するための多用途のソリューションを提供します。
以上がREGEXP_SUBSTR を使用してカンマ区切りリストから n 番目の要素を安全に抽出し、NULL を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。