高分 求解Sql语句

claymore1114 2010-06-11 02:11:56
要求:
表A中 有 一个列 LowUserID nvarchar(MAX),

LowUserID存放格式有三种:1)78ddfd|dfddfk //用户的id,之间用|分割,表示包含。
2) * // 表示全部
3) *%78ddfd|dfddfk // *%表示排除的id号。

现通过User(ID nvarchar(50),name nvarchar(50))表,通过name模糊查询出的ID集合,
再通过 这个ID集合在表A中 通过与LowUserID 列,对比,查出LowUserID中存在ID集合中的表A的信息。

就是ID集合,那个出现在 LowUserID 中就查出谁【表示包含的】。

不知道 意思明白了没,请大家帮忙!!

...全文
128 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2010-06-11
  • 打赏
  • 举报
回复
最好给出完整的表结构,测试数据,计算方法和正确结果.


发帖注意事项
http://topic.csdn.net/u/20091130/21/fb718680-98ff-4afb-98d8-cff2f8293ed5.html?24281
teerhu 2010-06-11
  • 打赏
  • 举报
回复
claymore1114 2010-06-11
  • 打赏
  • 举报
回复
意思 还不够明白 , 楼上的几位 ,有点这个味道。
谁还有类似的代码
hfCoder 2010-06-11
  • 打赏
  • 举报
回复
帮 顶
cjyh0061 2010-06-11
  • 打赏
  • 举报
回复
帮 顶
lxy_swufe 2010-06-11
  • 打赏
  • 举报
回复
不明所云.........
ChinaJiaBing 2010-06-11
  • 打赏
  • 举报
回复

---
贴出数据和关联,
从你的述描中可以用 join 再加上函数 charindex应该能做到...........
xman_78tom 2010-06-11
  • 打赏
  • 举报
回复

-- 这个意思???
if object_id('a') is not null
drop table a;
go
create table [a] (LowUserID varchar(max));
go
insert into [a]
select '78ddfd|dfddfk' union all select '*' union all select '*%78ddfd|dfddfk';
go

if object_id('user') is not null
drop table [user];
go
create table [user] (id varchar(50), name varchar(50));
go
insert into [user]
select '78ddfd','AAA' union all select 'dfddfk','BBB' union all
select 'xxxxxx','XXX';
go

select * from a,[user] u
where charindex('*%',a.LowUserID)>0 and charindex(u.id,a.LowUserID)=0
union all
select * from a,[user] u where a.LowUserID='*'
union all
select * from a,[user] u
where charindex(u.id,a.LowUserID)>0 and charindex('*%',a.LowUserID)=0 and a.LowUserID<>'*';
/*
*%78ddfd|dfddfk xxxxxx XXX
* 78ddfd AAA
* dfddfk BBB
* xxxxxx XXX
78ddfd|dfddfk 78ddfd AAA
78ddfd|dfddfk dfddfk BBB
*/
hbjlwhl 2010-06-11
  • 打赏
  • 举报
回复
感觉也是对每个帐号进行权限分配问题。
估计得用游标了,先对LowUserID 进行拆分。然后再查找每个id对应的人名。
永生天地 2010-06-11
  • 打赏
  • 举报
回复
是不是这样,看起来像是权限问题


declare @name varchar(50)
set @name='xxx'
select LowUserID from 表A
where LowUserID='*'
or (left(LowUserID,2)<>'*%' and exists(select ID from [User] where name like '%'+@name+'%' and charindex(ID,LowUserID)>0))
or (left(LowUserID,2)='*%' and not exists(select ID from [User] where name like '%'+@name+'%' and charindex(ID,LowUserID)>0))
albert_sky 2010-06-11
  • 打赏
  • 举报
回复
最好给点数据,需求没看明白
claymore1114 2010-06-11
  • 打赏
  • 举报
回复
查出 符合条件 的A表中的信息
chuifengde 2010-06-11
  • 打赏
  • 举报
回复
给出数据和要的结果
kenvenlee 2010-06-11
  • 打赏
  • 举报
回复
不知所云

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧