日期:2014-05-17 浏览次数:20714 次
IF OBJECT_ID('tb') IS NOT NULL
DROP TABLE tb
GO
CREATE TABLE tb (id VARCHAR(10),col VARCHAR(30))
INSERT INTO tb VALUES ('管理员','李四')
INSERT INTO tb VALUES ('操作员','张三,王五,赵大')
go
SELECT T1.ID
,SUBSTRING(T1.COL,T2.NUMBER,CHARINDEX(',',T1.COL+',',NUMBER)-T2.NUMBER)
FROM TB T1
INNER JOIN MASTER..SPT_VALUES T2
ON T2.TYPE='P' AND CHARINDEX(',',','+T1.COL,T2.NUMBER)=T2.NUMBER
--结果:
/*
管理员 李四
操作员 张三
操作员 王五
操作员 赵大
*/
----------------------------
-- Author :DBA_Huangzj(發糞塗牆)
-- Date :2013-03-20 15:37:11
-- Version:
-- Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64)
-- Jun 17 2011 00:54:03
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1, v.721)
--
----------------------------
--> 测试数据:[huang]
if object_id('[huang]') is not null drop table [huang]
go
create table [huang]([职位] varchar(6),[人员] varchar(14))
insert [huang]
select '管理员','李四' union all
select '操作员','张三,王五,赵大'
--------------开始查询--------------------------
SELECT
a.[职位] ,
SUBSTRING([人员], number, CHARINDEX(',', [人员] + ',', number) - number) AS [人员]
FROM [huang] a ,
master..spt_values
WHERE number >= 1
AND number < LEN([人员])
AND type = 'p'
AND SUBSTRING(',' + [人员], number, 1) = ','
----------------结果----------------------------
/*
------ --------------
管理员 李四
操作员 张三
操作员 王五
操作员 赵大
*/