13

私の SQL ステートメントでは、文字 '_' の文字列から部分文字列を抽出する必要があります。文字列は、たとえば 'A_XXX' 'AB_XXX' 'ABC_XXXX' である可能性があるため、抽出された部分文字列は 'A' 'AB' 'ABC' のようになります。

Oracle では、これは substr() および instr() 関数を使用して簡単に行うことができます。

select substr('AB_XXX', 1, instr('AB_XXX', '_')-1) as substring
from dual;

結果は次のようになります。

SUBSTRING
------------------------
AB

特定の部分文字列が文字列の配列に含まれているかどうかを確認するには、このクエリが必要です。

クエリ全体は次のようになります。

select 'AB_XXX' from dual
where (instr('ABC_AB_A', substr('AB_XXX', 1, instr('AB_XXX', '_')-1))>0);

SQL-Standardでそれを書く方法はありますか?

よろしくお願いします。

編集:

PostgreSQL が代替機能を提供している場合、それも役立ちます。残りは、たとえばINで解決できます。本当に重要な部分は、部分文字列を取得することです。

4

3 に答える 3