Oracle SQL を使用した区切り文字位置による文字列の分割
文字列を扱うときの一般的なタスクは、文字列を、特定の区切り文字。ただし、文字列内で区切り文字の位置が異なる場合、分割はより複雑になります。
問題ステートメント
「F/P/O」のような文字列があるとします。 「/」区切り文字の最も遠い位置で分割したいと考えています。望ましい結果は、文字列を「F/P」と「O」の 2 つの部分に分割することです。
Initial Attempt
次の SQL ステートメントは、文字列を分割しようとします。 SUBSTR 関数と INSTR 関数を使用した文字列:
SELECT Substr('F/P/O', 1, Instr('F/P/O', '/') - 1) part1, Substr('F/P/O', Instr('F/P/O', '/') + 1) part2 FROM dual
ただし、このクエリでは、文字列が "F" と "F" に分割されて予期しない結果が生成されます。 "/P/O."
解決策
問題は INSTR 関数の使用にあります。デフォルトでは、INSTR は最も遠い区切り文字ではなく、最初に出現した区切り文字を検索します。最も遠い区切り文字を見つけるには、文字列の末尾から検索するように INSTR 関数を変更する必要があります。
SELECT SUBSTR(str, 1, Instr(str, '/', -1, 1) -1) part1, SUBSTR(str, Instr(str, '/', -1, 1) +1) part2 FROM DATA
末尾 (負の start_position -1 で示される) から検索を開始すると、INSTR 関数は区切り文字の最後の出現箇所を特定し、それに応じて文字列を「F/P」と「O」に分割します。このアプローチにより、文字列に複数の区切り文字がある場合でも、最も遠い位置で分割が行われます。
以上がOracle SQLで最も遠い区切り文字に基づいて文字列を分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。