在单个查询oracle中进行多项选择

时间:2015-05-01 02:50:22

标签: sql oracle oracle11g oracle-sqldeveloper

callback undefined

结果:

263904755925760 Anaheim-Santa Ana-Irvine CA

那么如何使用多个选择将一行中的每个城市分开 喜欢:Anaheim CA.          Santa Ana CA.          Irvine CA

1 个答案:

答案 0 :(得分:1)

根据您的示例数据和所需的输出,实际上您想要在-之类的字符串中Anaheim-Santa Ana-Irvine之间提取值,然后使用CA之类的值连接它们,以便结果正如你所提到的应该是:

Anaheim   CA
Santa Ana CA
Irvine    CA

对这些场景使用regx_substr是非常有用的,你可以通过将提取的值与生成的id列表(表)交叉连接来实现结果,其中复数字符串中的值的数量为:

SQL> create table strTable(complexStr varchar(100),strId varchar(5));

Table created.

SQL> insert into strTable values('Anaheim-Santa Ana-Irvine','CA');

1 row created.

SQL> commit;

Commit complete.

SQL> select trim(regexp_substr(t.complexStr, '[^-]+', 1, ids.column_value)) city,
  2  t.strId state
  3  from strTable t
  4  cross join
  5  table (cast (multiset
  6  (select level from dual connect by level <= regexp_count(t.complexStr, '-')+1)
  7  AS sys.odciNumberList)) ids;

CITY        STATE
--------------------   
Anaheim     CA

Santa Ana   CA

Irvine      CA


SQL> drop table strTable;

Table dropped.

SQL>