一张表职位表
字段: 职位,人员
数据用例: 管理员 李四
操作员 张三,王五,赵大
可以多个人名 存在一个字段里 用逗号隔开。
现在 问题是 我要查询出来的时候 显示成管理员 李四
操作员 张三
操作员 王五
操作员 赵大
该怎么查询呢?求各位大大 帮忙……
优化
字段: 职位,人员
数据用例: 管理员 李四
操作员 张三,王五,赵大
可以多个人名 存在一个字段里 用逗号隔开。
现在 问题是 我要查询出来的时候 显示成管理员 李四
操作员 张三
操作员 王五
操作员 赵大
该怎么查询呢?求各位大大 帮忙……
优化
管理员 李四
操作员 张三
操作员 王五
操作员 赵大
*/
-- 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) = ','
----------------结果----------------------------
/*
------ --------------
管理员 李四
操作员 张三
操作员 王五
操作员 赵大
*/