首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在sql (oracle)中将元素添加到嵌套表中?

如何在sql (oracle)中将元素添加到嵌套表中?
EN

Stack Overflow用户
提问于 2018-12-04 02:58:22
回答 1查看 1.8K关注 0票数 1

假设我正在使用一个表person,person可能有多个姓氏,因此该属性应该存储在一个嵌套表中(这与存储姓氏的位置无关),下面是一个简单的sql,用于创建类型last name,表person,并在oracle的sql developper (11G XE)中添加一个示例行:

create type lastn as table of varchar2(10);
CREATE TABLE person
(
ID NUMBER NOT NULL 
, last_name lastn
, CONSTRAINT EXEMPLE_PK PRIMARY KEY 
(
 ID 
)
ENABLE 
)nested table last_name store as ln;
insert into person values(1,ln('dani','bilel'));

我知道如何一次更新所有姓氏,但我需要保留现有的姓氏并添加其他姓氏,或者删除单个姓氏而不影响其他姓氏。简而言之,我希望我的代码像这样(我不熟悉PL/SQL):

update person set last_name=last_name+'third last name' where id=1;

我知道它不是那样工作的,我应该使用PL/吗?,难道不可以用其他方式吗?

请原谅我的问题,并感谢您的回复。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-04 03:50:04

可以使用表集合运算符插入到嵌套表中:

insert into table(select last_name from person where id = 1) values ('third');

1 row inserted.

select last_name from person where id = 1;

LAST_NAME                                         
--------------------------------------------------
LASTN('dani', 'bilel', 'third')

可以使用相同的方法删除图元:

delete from table(select last_name from person where id = 1) where column_value = 'bilel';

1 row deleted.

select last_name from person where id = 1;

LAST_NAME                                         
--------------------------------------------------
LASTN('dani', 'third')

你甚至可以更新它们:

update table(select last_name from person where id = 1)
set column_value = 'second' where column_value = 'third';

1 row updated.

select last_name from person where id = 1;

LAST_NAME                                         
--------------------------------------------------
LASTN('dani', 'second')
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53600148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档