1
的排序顺序和值的每个组合如果非要用逗号分隔的数字字符串,像这样:得到一个CSV
Declare @string varchar(20) = '123,456,789'
,并想通过返回值的每个可能的组合+排序这样做:
Select Combination FROM dbo.GetAllCombinations(@string)
这将在返回结果是:
123
456
789
123,456
456,123
123,789
789,123
456,789
789,456
123,456,789
123,789,456
456,789,123
456,123,789
789,456,123
789,123,456
正如你看到的,不仅是每个组合都会返回,还包括每个组合+排序顺序。该示例仅示出了3由逗号分隔的值,但应该解析的任何量 - 递归。
将是使用WITH CUBE
语句的境界某处所需要的逻辑,但使用WITH CUBE
(表中的结构,而不是当然的CSV)的问题,就是它不会洗牌值123,456 456,123 etc.
的顺序,并且只会提供每个组合,这只是战斗的一半。
目前我不知道该怎么尝试。如果有人可以提供一些援助,将不胜感激。
http://dba.stackexchange.com/questions/29661/sql-query-for-combinations-without-repetition – Donal 2014-08-28 01:19:36
排列是你正在寻找的词我认为:) https://www.google.com .au/webhp?sourceid = chrome-instant&ion = 1&espv = 2&ie = UTF-8#q = define%3Apermutation – 2014-08-28 01:27:29
谢谢@Donal那完美无缺。不幸的是它需要的时间太长了,我即使使用CLR。虽然值得一试。 – 2014-08-28 07:35:41