With a little SQL you can convert a string into set of rows, which can be used as an input to a normal join, eg
SQL> variable acct varchar2(30)
SQL> exec :acct := '123,456,789'
SQL> select substr(:acct,
  2                nvl(lag(loc) over ( order by loc),0)+1,
  3                loc-nvl(lag(loc) over ( order by loc),0)-1
  4               ) list_as_rows
  5  from (
  6    select distinct (instr(:acct||',',',',1,level)) loc
  7    from dual
  8    connect by level <= length(:acct)-length(replace(:acct,','))+1
  9    );
LIST_AS_ROWS
--------------------------------
123
456
789
Here's a video walking you through each step in the process