SQL 存储过程中 INT 类型的 IN 操作

给定的用户没有select[员工信息表]的权利.只能通过存储过程的调用来获取所以首先不要考虑exec('select*from员工信息表')之类的了具体情况死这样的.表1... 给定的用户没有select [员工信息表]的权利. 只能通过存储过程的调用来获取
所以首先不要考虑 exec('select * from 员工信息表') 之类的了

具体情况死这样的.

表1 - 员工信息表:
工号(nvarchar) 权限(nvarchar)
a00231 1,3,4
a00033 2,4,1

表2 - 导航条项目
ID(bigint) 文字(nvarchar)
1 添加用户
2 删除用户
3 查找用户
4 新增用户

我想通过select [员工信息表]来获取具体的导航条项目列表
比如 select @权限 = 权限 from 员工信息表 where 工号 = 'a00231'
select * from 导航条项目 where 导航条项目.ID in (@权限);

可是提示"从数据类型 nvarchar 转换为 bigint 时出错。"

请问,我如何才能或通过表1 的 权限 来查找 表2 的行???
获得类似的

select * from 导航条项目 (某些方法) where 工号 = 'a00231';

得出的结果会是

ID(bigint) 文字(nvarchar)
1 添加用户
3 查找用户
4 新增用户
展开
 我来答
勇敢的樵夫
2013-05-29 · TA获得超过172个赞
知道小有建树答主
回答量:153
采纳率:100%
帮助的人:183万
展开全部
---查询语句
select * from 导航条项目 where charindex(','+CAST(ID as nvarchar(20))+',',','+(select 权限 from 员工信息表 where 工号='a00231')+',')>0
---查询语句
select * from 导航条项目 where charindex(','+CAST(ID as nvarchar(20))+',',','+(select 权限 from 员工信息表 where 工号='a00033')+',')>0

这样能满足你的要求么?希望能帮助到你。。。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式