如何从结果中删除集合类型名称
How to remove collection type name from results
当我运行这个查询
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) 出现在结果集中,因为我只是给出一个简单的 select.
why its (HR.TYPE_4)coming in the result set because I am just giving a simple select.
因为您将名称收集到一个嵌套的 table 集合中。您正在使用的用户界面有助于显示所有相关信息,包括集合的数据类型和集合中的值。
您可能觉得它没有帮助,但无论您使用什么用户界面,开发人员都认为这是向用户显示集合的最有用的方式。您可以调查是否可以在用户界面上设置任何首选项以更改它的显示方式,或者您可以查看格式化数据的其他方法。
如果您只想要一个名称列表,则不需要集合,可以使用 LISTAGG
获取单个格式化字符串:
SELECT department_id,
LISTAGG(first_name, ',') WITHIN GROUP (ORDER BY first_name) AS names
FROM employees
GROUP BY department_id;
当我运行这个查询
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) 出现在结果集中,因为我只是给出一个简单的 select.
why its (HR.TYPE_4)coming in the result set because I am just giving a simple select.
因为您将名称收集到一个嵌套的 table 集合中。您正在使用的用户界面有助于显示所有相关信息,包括集合的数据类型和集合中的值。
您可能觉得它没有帮助,但无论您使用什么用户界面,开发人员都认为这是向用户显示集合的最有用的方式。您可以调查是否可以在用户界面上设置任何首选项以更改它的显示方式,或者您可以查看格式化数据的其他方法。
如果您只想要一个名称列表,则不需要集合,可以使用 LISTAGG
获取单个格式化字符串:
SELECT department_id,
LISTAGG(first_name, ',') WITHIN GROUP (ORDER BY first_name) AS names
FROM employees
GROUP BY department_id;