你的位置:首页 > 软件开发 > 数据库 > 排列组合的实现

排列组合的实现

发布时间:2015-05-28 00:00:48
数据库环境:SQL SERVER2008R2先说一下需求:实现1,2,3的排列组合,即123,132,213,231,312,321。哈哈,你没看错,需求这是这么短短的一句话。我想到了2个方法,都可以实现需求。下面我分别介绍这2种实现方法。方法一:建一个表xx,往xx表中插入1, ...

数据库环境:SQL SERVER2008R2

先说一下需求:实现1,2,3的排列组合,即123,132,213,231,312,321。

哈哈,你没看错,需求这是这么短短的一句话。

我想到了2个方法,都可以实现需求。下面我分别介绍这2种实现方法。

方法一:建一个表xx,往xx表中插入1,2,3自然数列,简单起见,把自然数改成字符串,

然后xx表和xx表进行FULL JOIN(全外连接)得到结果集tmp,结果集tmp再和xx表进行LEFT JOIN(左连接),

关联的条件是当前xx表的数据不存在结果集tmp中,这个可以通过MSSQL内置函数CHARINDEX实现。

/*数据准备*/WITH  x0     AS ( SELECT  '1' AS hid        UNION ALL        SELECT  '2' AS hid        UNION ALL        SELECT  '3' AS hid        --UNION ALL        --SELECT  '4' AS hid       )  /*计算、输出*/SELECT a.hid + b.hid AS hidFROM  ( SELECT  a.hid + b.hid AS hid     FROM   x0 a          FULL JOIN x0 b ON b.hid <> a.hid    ) a    LEFT JOIN x0 b ON CHARINDEX(b.hid, a.hid, 1) = 0ORDER BY 1

原标题:排列组合的实现

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录