我正在为Oracle工作中的项目创建一个小型数据库。其中一列需要记录多个值。创建多值列的查询是什么?
答案 0 :(得分:4)
如果您需要用户输入多个电子邮件地址,我会考虑创建一个USER_EMAIL
表来存储此类记录。
Create Table User_Email (User_Id int, Email varchar(100));
User_Id将是foreign key
,可以返回到您的USER
表。
然后,每个用户可以拥有1-n个电子邮件地址。这通常是数据库规范化的最佳实践。如果您的电子邮件具有不同的类型(即工作,个人等),您可以在该表中为该类型添加另一列。
如果您需要在单个列中返回行,则可以使用LISTAGG
查看:
select u.id,
listagg(ue.email, ', ') within group (order by ue.email) email_addresses
from users u
left join user_email ue on u.id = ue.user_id
group by u.id
答案 1 :(得分:0)
您可以尝试在Oracle列中使用VARRAY列。
查看此页面:https://www.orafaq.com/wiki/VARRAY
您可以在此处看到
创建或替换vcarray为VARCHAR2(128)的VARRAY(10);
创建表varray_table(ID号,col1 vcarray);
插入varray_table值(3,vcarray('D','E','F'));
选择t1.id,t2.column_value
FROM varray_table t1,TABLE(t1.col1)t2
其中t2.column_value ='A'或t2.column_value ='D'