我想在已经存在的表中添加几行(准确地说是15行)。最快的方法是什么?
这是可行的,但似乎是多余的。
select person_id from people_table
union all
select '0010' as person_id from dual
union all
select '0019' as person_id from dual
union all
select '0085' as person_id from dual
我想知道有没有一个解决办法:
select person_id from people_table
union all
select ('0010','0019','0085') as person_id from dual
请注意,我想保留列表中每个元素的前导零。这篇文章几乎就是我要找的,但它将每个元素转换为整数,并删除前导零。
3条答案
按热度按时间o2g1uqev1#
可以使用系统提供的集合类型;您可以使用
TABLE
操作符(甚至从oracle12开始就不再需要它了,正如我在下面演示的那样)。请注意,列名是COLUMN_NAME
-这是oracle在创建系统提供的类型时选择的名称。让我们创建一个用于测试的小表:
那么,下面是如何做到你想要的:
在谷歌上搜索
SYS.ODCIVARCHAR2LIST
(及类似)SYS.ODCINUMBERLIST
)如果你不熟悉它;它很有用。jaxagkaj2#
您需要使用以下层次结构查询:
k5hmc34c3#
请使用下面使用正则表达式的查询,