sql - 如何从结果中删除集合类型名称
问题描述
当我运行这个查询
create type type_4 as table of varchar2(20) ;
SELECT
department_id,
CAST(COLLECT(first_name) AS type_4) names
FROM employees
GROUP BY department_id;
我得到低于结果
我的问题是如何从结果中删除“HR.TYPE_4”,因为它无关紧要,而且
为什么它(HR.TYPE_4)会出现在结果集中,因为我只是给出一个简单的选择。
解决方案
为什么它(HR.TYPE_4)出现在结果集中,因为我只是给出一个简单的选择。
因为您将名称收集到嵌套表集合中。您正在使用的用户界面有助于显示所有相关信息,包括集合的数据类型和集合中的值。
您可能觉得它没有帮助,但您使用的任何用户界面的开发人员都认为这是向用户显示集合的最有用的方式。您可以调查是否可以在用户界面上设置任何首选项以更改其显示方式,或者您可以查看格式化数据的替代方法。
如果您只想要一个名称列表,那么您不需要一个集合并且可以LISTAGG
用来获取单个格式化字符串:
SELECT department_id,
LISTAGG(first_name, ',') WITHIN GROUP (ORDER BY first_name) AS names
FROM employees
GROUP BY department_id;