在使用存储过程中,有用到in
1:首先增加一个 split 函数
ALTER FUNCTION [dbo].[Split] --用来在存储过程中使用in的函数,这个函数的作用呢,就是把你输入的字符按一定的分隔符分开,并放在一个表里的一列里,然后返回。
( @c VARCHAR(300) , @split VARCHAR(50) ) RETURNS @t TABLE ( col VARCHAR(50) ) AS BEGIN WHILE ( CHARINDEX(@split, @c) < > 0 ) BEGIN INSERT @t( col ) VALUES ( SUBSTRING(@c, 1, CHARINDEX(@split, @c) - 1) ) SET @c = STUFF(@c, 1, CHARINDEX(@split, @c), '') END INSERT @t( col ) VALUES ( @c ) RETURN END
2:在存储过程中,这样写
create proc 查询公司员工下现有公司(@guwen varchar(200)) as --用途:查询员工下所有的公司(目前还在我公司旗下的) --参数为 'Queenie,Thomas,Cat,Sweet,Rain' --exec 查询公司员工下现有公司 'Queenie,Thomas,Cat,Sweet,Rain' begin SELECT a.id, a.COCN AS 公司中文名, a.COEN AS 公司英文名, a.CODATE AS 公司成立时间, b.cTypeName AS 公司类型, c.ename AS 顾问, a.F1 AS 股东一中文姓名, a.F1SUR AS 股东一英文姓, a.F1OTHER AS 股东一英文名, a.CMAN AS 联系人, a.Sex AS 联系人性别, a.CMAIL AS 联系人email, a.CTEL 联系人电话 ,a.CMOB AS 联系人手机 FROM List a INNER JOIN alz_companyType b ON a.companyTypeId = b.cTypeId INNER JOIN alz_guwen c ON a.GW = c.guwenid WHERE (c.ename IN (select * from Split(@guwen,',')) ) AND (a.ATDATEState < > '5') ORDER BY a.CODATE end