0
我會想返回表的行包括在MS SQL 2008的字符串的所有可能的組合,例如字符串「01-02-03-04」的:SQL服務器字符串組合
- 01 - 02 - 03 - 04
- 02 - 03 - 04
- 01 - 03 - 04
- 01 - 02 - 04
- 01 - 02 - 03
- 01 - 02
- 01 - 03
- 01 - 04
- 02 - 03
- 02 - 04
- 03 - 04
我會想返回表的行包括在MS SQL 2008的字符串的所有可能的組合,例如字符串「01-02-03-04」的:SQL服務器字符串組合
DECLARE @s varchar(150);
SET @s = '01-02-03-05-10';
WITH split AS (
SELECT
CAST(SUBSTRING(@s, number * 3 + 1, 2) AS varchar(150)) AS item,
rn = number
FROM master..spt_values
WHERE type = 'P' AND number between 0 AND LEN(@s)/3
),
combined AS (
SELECT
item,
rn,
itemcnt = 1
FROM split
UNION ALL
SELECT
item = CAST(c.item + '-' + n.item AS varchar(150)),
n.rn,
itemcnt = c.itemcnt + 1
FROM split n
INNER JOIN combined c ON n.rn > c.rn
)
SELECT *
FROM combined
WHERE itemcnt > 1
ORDER BY 1
我想這太:) – 2011-03-09 04:13:42
你忘了 「01」, 「02」,「03」和「04」。而且,絕對確切地說,也是空字符串。 – 2011-03-09 05:58:17
但我需要「01」,「02」,「03」和「04」以及空字符串。 – Samuel 2011-03-09 06:08:02