表myTable(id,toWhom),
其中toWhom字段是varchar,存放员工编号,多员工编号时用逗号分隔,
怎样写一存储过程myProcedure(@staffId int),使toWhom字段中包含有参数@staffId的记录被获取,不包含@staffId的记录不被获取.
谢谢,公司OA这个星期就要完工,急死我了!100分不够还可追加.like 没用,当toWhom=1111,1112,1113 时 @staffId=1或@staffId=11或@staffId=111就是同一结果
其中toWhom字段是varchar,存放员工编号,多员工编号时用逗号分隔,
怎样写一存储过程myProcedure(@staffId int),使toWhom字段中包含有参数@staffId的记录被获取,不包含@staffId的记录不被获取.
谢谢,公司OA这个星期就要完工,急死我了!100分不够还可追加.like 没用,当toWhom=1111,1112,1113 时 @staffId=1或@staffId=11或@staffId=111就是同一结果
解决方案 »
- sql2005 用B数据库的字段替换A数据库的字段
- ----------求解证件号码随机生成的问题--------(90分)-----下午要交了....急.......
- 问一个MS SQL 游标的问题
- 一个不错的数据库技术网站
- 急求: win7 (windows 7)下SQL Server管理器无法连接到远程SQL数据库
- 在存储过程里可不可以用变量表示字段名和表名?
- 这样的sql语句该怎么写?
- 新手上路:怎么把两个表单接合起来?(100分相送)
- 怎么实现多单词的全文检索功能?
- 在SQL Server2000里面客户端用查询分析器能不能修改id字段的属性!
- 好象不是很难,怎么就想不通?哎...
- 请教sp_executesql函数的使用
toWhom=,1111,1112,1113,
当@staffId=1时 根据 ,1,去查
当@1112=1时 根据 ,1112,去查再看看有没有其他的办法
Create Table myTable(id Int, toWhom Varchar(100))
--插入數據
Insert myTable Select 1, '1,2,3'
Union All Select 2, '3,10,11'
Union All Select 3, '111,112,113'
GO
--創建存儲過程
Create ProceDure myProcedure1(@staffId int)
As
Select * From myTable Where ',' + toWhom + ',' Like '%,' + Cast(@staffId As Varchar) + ',%'
GO
Create ProceDure myProcedure2(@staffId int)
As
Select * From myTable Where CharIndex(',' + Cast(@staffId As Varchar) + ',', ',' + toWhom + ',') > 0
GO
--測試
EXEC myProcedure1 1
EXEC myProcedure1 11EXEC myProcedure2 1
EXEC myProcedure2 11
GO
--刪除測試環境
Drop Table myTable
Drop ProceDure myProcedure1, myProcedure2
GO
--結果
/*
id toWhom
1 1,2,3id toWhom
2 3,10,11
*/
as
select * from myTable where charindex( ','+@staffid +',',','+toWhom+',')>0