22,207
社区成员
发帖
与我相关
我的任务
分享
SELECT TOP 8000 id = identity(int,1,1)
INTO # FROM syscolumns a, syscolumns b --(详细说明下这意思吗?)
SELECT
A.ID,
COUNTRY = SUBSTRING(A.COUNTRY, B.ID, CHARINDEX(';', A.COUNTRY + ';', B.ID) - B.ID)
FROM A, # B
WHERE SUBSTRING(';' + a.COUNTRY, B.id, 1) = ';' --(详细说明下这意思吗?)
ORDER BY 1,2
GO
DROP TABLE A,#
CREATE TABLE A(id INT,country VARCHAR(100))
INSERT A
SELECT 1,'中国;日本;韩国' UNION ALL
SELECT 2,'美国;意大利;法国' UNION ALL
SELECT 3,'德国'
SELECT * FROM A
-- 建立一个辅助的临时表就可以了
SELECT TOP 8000 id = identity(int,1,1)
INTO # FROM syscolumns a, syscolumns b
SELECT
A.ID,
COUNTRY = SUBSTRING(A.COUNTRY, B.ID, CHARINDEX(';', A.COUNTRY + ';', B.ID) - B.ID)
FROM A, # B
WHERE SUBSTRING(';' + a.COUNTRY, B.id, 1) = ';'
ORDER BY 1,2
GO
DROP TABLE A,#
id country
----------- ----------------
1 中国;日本;韩国
2 美国;意大利;法国
3 德国
(所影响的行数为 3 行)
ID COUNTRY
----------- ---------
1 韩国
1 日本
1 中国
2 法国
2 美国
2 意大利
3 德国
(所影响的行数为 7 行)