select substr(help, 1, instr(help,' ') - 1)
from ( select 'hello my name is...' as help
from dual )
instr(help、'')
検索している文字列を含む、最初の引数の2番目の引数の最初の出現の位置インデックスを返します。つまり、''
の最初の出現 文字列内'hellomy name is ...'
プラス スペース。
substr(help、1、instr(help、'')-1)
次に、最初の文字から instr(...
)で示されるインデックスに入力文字列を取得します 。次に、スペースが含まれないように1つ削除します。
n番目のオカレンスについては、これを少し変更してください:
instr(help、''、1、n)
nth ''
の出現 最初の文字から。次に、次のインデックスの位置インデックスを見つける必要があります instr(help、''、1、n + 1)
、最後にそれらの違いを調べて、 substr(...
。 nthを探しているとき 、 nの場合 は1です。これは故障し、次のように対処する必要があります。
select substr( help
, decode( n
, 1, 1
, instr(help, ' ', 1, n - 1) + 1
)
, decode( &1
, 1, instr(help, ' ', 1, n ) - 1
, instr(help, ' ', 1, n) - instr(help, ' ', 1, n - 1) - 1
)
)
from ( select 'hello my name is...' as help
from dual )
これもnで故障します 。ご覧のとおり、これはばかげているので、正規表現
>
select regexp_substr(help, '[^[:space:]]+', 1, n )
from ( select 'hello my name is...' as help
from dual )