34,838
社区成员




create table tb(项目编号 varchar(10),项目名称 varchar(10),中标人 varchar(20))
insert into tb values('001', '测试1', '天天/常常/饿额')
go
-- 建立一个辅助的临时表就可以了
SELECT TOP 8000 id = identity(int,1,1) INTO tmp FROM syscolumns a, syscolumns b
SELECT A.项目编号,A.项目名称,中标人 = SUBSTRING(A.中标人, B.ID, CHARINDEX('/', A.中标人 + '/', B.ID) - B.ID) FROM tb A, tmp B WHERE SUBSTRING('/' + a.中标人, B.id, 1) = '/' ORDER BY 1,2
GO
drop table tb,tmp
/*
项目编号 项目名称 中标人
---------- ---------- --------------------
001 测试1 天天
001 测试1 常常
001 测试1 饿额
(所影响的行数为 3 行)
*/
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 行)