ホームページ >データベース >mysql チュートリアル >Null を処理して、カンマ区切りの文字列から n 番目の値を抽出するにはどうすればよいですか?
Null 処理を使用したカンマ区切りリストからの n 番目の値の抽出
REGEXP_SUBSTR() を使用してカンマから n 番目の値を抽出する場合、区切られたリストでは、NULL 値の処理が困難になる可能性があります。これを実現するには、正規表現を変更する必要があります。
元の式 REGEXP_SUBSTR('1,,3,4,5', '[^,] ', 1, 2) は、 1 つ以上の非コンマ文字が 2 回目に出現する。ただし、null に遭遇すると、それを空ではない新しい値の始まりとして解釈し、予期された null の代わりに 3 番目の項目を返します。
これに対処するために、式は 0 またはその他の非コンマ文字: REGEXP_SUBSTR('1,,3,4,5', '(.*?)(,|$)', 1, 2, NULL, 1)。これは、カンマまたは行末に続く 0 個以上の文字を検索することによって目的の値を識別し、最初のサブグループ (目的のデータ) のみを返します。
この拡張された式は、null を正しく処理し、戻り値を返します。 2 番目の項目が空の場合は 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;
このアプローチでは、null に対応し、リストから任意の値を選択できます。
以上がNull を処理して、カンマ区切りの文字列から n 番目の値を抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。