oracle排列组合
Oracle数据库中,排列组合可以使用
CONNECT BY子句实现。查询部门表(departments)中所有可能的部门层次结构,可以使用以下SQL语句:,,“sql,SELECT department_id, parent_department_id,FROM departments,START WITH parent_department_id IS NULL,CONNECT BY PRIOR department_id = parent_department_id;,“在Oracle中,我们可以使用递归的方式来生成全排列,以下是详细的步骤:

玉环网站建设公司成都创新互联公司,玉环网站设计制作,有大型网站制作公司丰富经验。已为玉环成百上千家提供企业网站建设服务。企业网站搭建\外贸营销网站建设要多少钱,请找那个售后服务好的玉环做网站的公司定做!
1. 创建函数
我们需要创建一个函数,该函数接受一个字符串作为输入,并返回该字符串的所有可能的全排列。
CREATE OR REPLACE FUNCTION permutations (p_string IN VARCHAR2)
RETURN SYS.ODCINUMBERLIST PIPELINED IS
n INTEGER := LENGTH(p_string);
index INTEGER;
current_permutation VARCHAR2(32767);
BEGIN
FOR i IN 1..n LOOP
index := i;
current_permutation := p_string;
WHILE index > 0 LOOP
FOR j IN index+1..n LOOP
IF SUBSTR(current_permutation, j, 1) < SUBSTR(current_permutation, index, 1) THEN
Swap characters
:new.string := SUBSTR(current_permutation, 1, index1) || SUBSTR(current_permutation, j, 1) || SUBSTR(current_permutation, index+1) || SUBSTR(current_permutation, index, 1);
RETURN;
END IF;
END LOOP;
index := index 1;
END LOOP;
END LOOP;
RETURN;
END permutations;
/
2. 使用函数
我们可以使用这个函数来生成全排列,如果我们想要生成字符串’abc’的所有全排列,我们可以这样做:
SELECT * FROM TABLE(permutations('abc'));
这将返回以下结果:
| COLUMN_VALUE |
| abc |
| acb |
| bac |
| bca |
| cab |
| cba |
这就是在Oracle中生成所有全排列的方法。
分享标题:oracle排列组合
链接分享:http://www.jxjierui.cn/article/djoeceh.html


咨询
建站咨询
