declare @tableA table(info varchar(20)) insert into @tableA select '1,2,3' union select '7,8,9' select * from @tableA where charindex(',1,',','+info+',')>0 or charindex(',3,',','+info+',')>0 or charindex(',5,',','+info+',')>0;
注意:sql语句中,不可手工折解1,3,5字符
-- 05declare @M varchar(50), @N xml
set @M='1,2,3,4'set @N=convert(xml,'<r><c>'+replace(@M,',','</c><c>')+'</c></r>') ;with cte as ( select col=T.c.value('.[1]','varchar(20)') from @N.nodes('/r/c') T(c) )/** --select * from ctecol -------------------- 1 2 3 4(4 行受影响) */select a.* from tb a join cte b on charindex(','+ltrim(b.col)+',',','+a.col+',') > 0
declare @tableA table(info varchar(20))
insert into @tableA select '1,2,3' union select '7,8,9'
select * from @tableA
where charindex(',1,',','+info+',')>0
or charindex(',3,',','+info+',')>0
or charindex(',5,',','+info+',')>0;
-- 05declare @M varchar(50),
@N xml
set @M='1,2,3,4'set @N=convert(xml,'<r><c>'+replace(@M,',','</c><c>')+'</c></r>')
;with cte as
(
select col=T.c.value('.[1]','varchar(20)')
from @N.nodes('/r/c') T(c)
)/**
--select * from ctecol
--------------------
1
2
3
4(4 行受影响)
*/select a.*
from tb a join cte b on charindex(','+ltrim(b.col)+',',','+a.col+',') > 0
1.你是高手,构思超级牛,永远用不到高级查询等语句,有资格随便的骂人SB
2.你真像你说的一样,是超级菜鸟,从来只会使用最简单的select,那就真没资格骂人了
每个人可以自由组成小组,如ren1,ren2,ren3组成mssql专家组 ren2,ren3,ren4组成组网页程序组 当然还有其它组现在对这些小组进行安排工作,以3小时为一期,到mssql专家组工作时,其它组中如有mssql专家组成员,就不可安排工作专家组成员可以请假,请假时间中,该专家组也为不可工作状态
然后写出 人员表 专家组表 工作安排时间表最后,在当前时间查询出所有专家组的信息和可工作或不可工作状态(状态分为 空闲,工作中,有人请假,该组成员在其它组工作)
另需要注意的是,用一句sql语句就完成查询工作
renid name qingjia
1 张三 没
2 李四 没
3 王五 没
4
5
6 请假了表zuid name renList
1 sql 1,2,3
2 web 2,3,4
3 .net 2,6,8表 workid 工作时间 结束时间 zuid renid
1 9:00:00 11:59:59 1 1,2,3 (因为日期太长,前面没写,但实际是2012年7月5号)所有表有精简,实际数据更多现在要查出到前时间,各组状态如现在,就是1,2二组空闲,3组有人请假
如果现在是7月5号的早上9点~12点之间查,那么就要显示为 1组工作中,2组有成员在其它组工作,3组有人请假虚心请教amazeyeli帮我写一个更合理的数据结构,能非常方便的完成查询
另外,感谢TravyLee的解答