暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 集合功能集

askTom 2017-06-16
396

问题描述

嗨,

我的问题与集合函数集的工作方式有关。我有一个包含重复值的集合 (例如提供的示例),并且我想将该集合中的值的不同列表作为输出。

SET函数正是完成该工作。但是,我不确定是否保留了值的原始顺序。这样,我的意思是当有这样的东西:

'a','b','c','d','b','c','d','b','c'
我总是以
'a','b','c','d'

或者有可能以这样的方式结束
'b','d','a','c'

在文档中并没有真正提到:https://docs.oracle.com/database/121/SQLRF/functions177.htm#SQLRF06308

谢谢
佩德罗

专家解答

看起来是这样的,例如

SQL> create or replace type varchar2_list is table of varchar2(10);
  2  /

Type created.

SQL> select varchar2_list('1','2','3','4','5','6','7','1','2','3','4') from dual;

VARCHAR2_LIST('1','2','3','4','5','6','7','1','2','3','4')
--------------------------------------------------------------------------------------------------
VARCHAR2_LIST('1', '2', '3', '4', '5', '6', '7', '1', '2', '3', '4')

SQL> select set(varchar2_list('1','2','3','4','5','6','7','1','2','3','4')) from dual;

SET(VARCHAR2_LIST('1','2','3','4','5','6','7','1','2','3','4'))
--------------------------------------------------------------------------------------------------
VARCHAR2_LIST('1', '2', '3', '4', '5', '6', '7')

SQL> select set(varchar2_list('4','1','7','3','2','4','7','6','1','9','3')) from dual;

SET(VARCHAR2_LIST('4','1','7','3','2','4','7','6','1','9','3'))
--------------------------------------------------------------------------------------------------
VARCHAR2_LIST('4', '1', '7', '3', '2', '6', '9')



但是当然,数以百万计的例子并不能证明反例的不存在。我将询问PL/SQL PM,并提供更多信息。

但是如果它不在文档中。.. 那么一般来说,依靠它是不安全的
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论