请看看我的存储过程有什么问题?

来源:百度知道 编辑:UC知道 时间:2024/06/05 03:47:34
目的是:按员工姓名、Email、部门名称、查询员工信息。(要求员工姓名、Email、部门名称可以三个中只输入任意一个,二个,或三个)
SQl如下,但是问题是,我要输入三个才成功查询,请问我的SQl语句错在哪?

create procedure select_employee
@EmployeeName varchar(50)='',@EmployeeEmail varchar(50)='',@DepartmentName char(10)=''
as
select e.EmployeeID as 员工编号,e.EmployeeName as 员工姓名,
e.EmployeeLogin as 员工登陆名,e.EmployeeEmail as 员工电子邮件,
d.DepartmentName as 部门名称,e.EmployeePhone as 员工电话
from Employee as e join Department as d
on e.DepartmentID=d.DepartmentID
where e.EmployeeName like '%'+@EmployeeName+'%'
and e.EmployeeEmail like '%'+@EmployeeEmail+'%'
and d.DepartmentName like '%'+@DepartmentName+'%'
不行阿,有两个人,分别是销售部的李小明,人事部的李小明,我要选的是人事部的李小明就不能了

@DepartmentName char(10)=''
类型改为 varchar
char当你给他赋值的时候,如果长度不到指定的位数,会在后面补空格。
试下

题意说的不太清晰

1.建议:不要使用什么连接之类的 left join 等
直接这样就可以了
from Employee as e,Department as d
where e.DepartmentID=d.DepartmentID
and e.EmployeeName like '%'+@EmployeeName+'%'
and e.EmployeeEmail like '%'+@EmployeeEmail+'%'
and d.DepartmentName like '%'+@DepartmentName+'%'

如果还是不对 就检查员工信息是否 录入正确

where e.EmployeeName like '%'+@EmployeeName+'%'
and e.EmployeeEmail like '%'+@EmployeeEmail+'%'
and d.DepartmentName like '%'+@DepartmentName+'%'
把 and 改成 or