ホームページ >データベース >mysql チュートリアル >Oracle SQLでアンダースコアの前の部分文字列を抽出するにはどうすればよいですか?

Oracle SQLでアンダースコアの前の部分文字列を抽出するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-27 13:27:08802ブラウズ

How to Extract a Substring Before an Underscore in Oracle SQL?

Oracle SQL で特定の文字までの部分文字列を抽出する方法

文字列内の文字の位置を特定することは、データ操作における一般的な課題となることがあります。これに対処するために、この質問では、特定の文字 (この場合はアンダースコア ('_')) までの部分文字列をテーブル列から抽出する必要があるシナリオを検討します。

SUBSTRING の位置ベースの制限

SUBSTRING 関数を使用する最初のアプローチは、位置ベースの選択に依存しているため不十分であることがわかります。与えられた例ではアンダースコアの位置が異なるため、このメソッドは目的の部分文字列を一貫して取得できません。

RTRIM 関数: 有望だが不完全な解決策

RTRIM 関数の考察。右側から特定の文字セットを削除することは、最初は有望に思えます。ただし、RTRIM 関数を別の方法と組み合わせて使用​​しない限り、アンダースコアに至る文字を分離することはできません。

SUBSTR、INSTR、NVL の組み合わせ

解決策は次のとおりです。 SUBSTR 関数を、文字の位置を識別する INSTR、および NULL 値を処理する NVL と組み合わせます。次のコードは、このアプローチを示しています。

SELECT NVL(SUBSTR('ABC_blah', 0, INSTR('ABC_blah', '_')-1), 'ABC_blah') AS output
FROM DUAL

実装について

  • SUBSTR 関数は、指定された開始位置 (0) と長さ (INSTR('ABC_blah) に基づいて部分文字列を抽出します。 ', '_')-1).
  • INSTR 関数は、
  • NVL 関数は、見つかった場合は部分文字列を返します (null ではない)。それ以外の場合は、元の文字列を返します。

以上がOracle SQLでアンダースコアの前の部分文字列を抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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