PL/SQLにはsplitのような関数はないので、自分で作る。
というか、パクってくる。
WEB上で公開されているサンプルなどを参考に。
--文字列を指定デリミタで分割、指定インデックスの要素を返す。
--引数異常時、インデックスが範囲外の場合はNULLを返す。
create or replace function fxsSplit (
cas_ varchar2,
caiIdx integer,
casDelim varchar2
) return varchar2 is
vlsItem varchar2(255);
begin
if cas_ is null or caiIdx is null or casDelim is null then
return null;
end if;
if caiIdx = 1 then
vlsItem := substr(cas_, 1, instr(cas_ || casDelim, casDelim, 1, 1 ) - 1 );
else
vlsItem := substr(cas_, instr(cas_, casDelim, 1, caiIdx - 1 ) + 1,
instr(cas_ || casDelim, casDelim, 1, caiIdx ) - instr(cas_, casDelim, 1, caiIdx - 1 ) - 1);
end if;
return vlsItem;
end;
WEB上で公開されているサンプルなどを参考に。
--文字列を指定デリミタで分割、指定インデックスの要素を返す。
--引数異常時、インデックスが範囲外の場合はNULLを返す。
create or replace function fxsSplit (
cas_ varchar2,
caiIdx integer,
casDelim varchar2
) return varchar2 is
vlsItem varchar2(255);
begin
if cas_ is null or caiIdx is null or casDelim is null then
return null;
end if;
if caiIdx = 1 then
vlsItem := substr(cas_, 1, instr(cas_ || casDelim, casDelim, 1, 1 ) - 1 );
else
vlsItem := substr(cas_, instr(cas_, casDelim, 1, caiIdx - 1 ) + 1,
instr(cas_ || casDelim, casDelim, 1, caiIdx ) - instr(cas_, casDelim, 1, caiIdx - 1 ) - 1);
end if;
return vlsItem;
end;
※コメント投稿者のブログIDはブログ作成者のみに通知されます