急:问高手一个SQL语句,在线等候,解决后即结贴

wjhcjg 2003-11-13 12:34:02
我用例子来说明:
表名(简化)及字段结构如右:rw_tasks(int id,nvarchar users,nvarchar state)
字段users的存储格式如右:gkm,wqz,wsx,wf,
字段state的存储格式如右:0,1,2,0,

说明:users存的是人员帐号,用“,”隔开;而字段state存的是和users字段中存贮的各帐号对应的一种状态,也用","隔开。如上例gkm对应0;wqz对应1;wsx对应2;wf对应0

问题:请问能不能写一条SQL查询语句查出满足下面条件的所有记录?(条件如下)
查询条件:(用举例说明条件)查出所有users字段含有"wqz"的,且字段state中和其对应的状态为"0"的记录.谢谢!
...全文
14 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
njjianguogu 2003-11-13
create #temp ( id int,users nvarchar(100) , state nvarchar(100))
declare @s varchar(100),@h varchar(100),@r varchar(100)
declare @p int,@m int
set @m = 0


SELECT @@CURSOR_ROWS
DECLARE authors_cursor CURSOR FOR
SELECT users,state FROM rw_tasks
OPEN authors_cursor
FETCH authors_cursor INTO @s,@h
WHILE @@CURSOR_ROWS = 0
begin
IF charindex(@s,'wqz') > 0
set @p = pos(@s,'wqz')
set @r = left(@s,@p - 1)
WHILE charindex(@r,',') > 0
begin
@m = @m + 1
end
@r = substring(@h,@m + @m,1)
insert #temp values(select * from rw_tasks where state = @r)
end
end
CLOSE authors_cursor
DEALLOCATE authors_cursor
select * from #temp
回复
gmlxf 2003-11-13
select * from rw_tasks
where charindex(',wqz,',','+users)>0 and state='0'
回复
gmlxf 2003-11-13
select * from rw_tasks
where charindex(',wqz,',','+users)>0 and state=0
回复
wjhcjg 2003-11-13
客户的表,没办法帮其改,我们只是要做一个接口的,那有没有办法写呢?
回复
你的表建立不何规范,建议先规范表,然后再完成查询.
如:将你的这一条记录,分成四个记录.查询起来会很方便的.
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2003-11-13 12:34
社区公告
暂无公告