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