0

I have a stored procedure with a parameter @name nvarchar(50). Now the stored procedure itself looks like this:

CREATE PROCEDURE [dbo].[dcspFilterEmpList]
    @empName nvarchar   
AS
    SELECT 
        employee_id AS 'ID',
        name_1+' '+surname AS 'NAME'    
    FROM 
        Employees
    WHERE   
        'NAME' LIKE '%'+@empName+'%'

I enter any part of a name that exists in the table, but, as a result, I get the whole table. Sometimes I get strange results, e.g. two rows, one of which matches criteria, the other one doesn't.

4

2 回答 2

0
SELECT
    emp_id AS ID, 
    emp_name+' '+ emp_surname AS NAME
FROM 
    Employees 
WHERE 
    emp_name LIKE '%' + @name+ '%' OR  emp_surname LIKE '%' + @name+ '%' 
于 2013-04-22T05:21:29.763 回答
0

试试这个——

CREATE PROCEDURE [dbo].[dcspFilterEmpList]

    @empName NVARCHAR(500)   

AS BEGIN

    SELECT 
          ID = e.employee_id
        , NAME = e.name_1 + ' ' + e.surname    
    FROM dbo.Employees e
    WHERE e.name_1 + ' ' + e.surname LIKE '%'+ @empName + '%'

END

更新:

CREATE PROCEDURE [dbo].[dcspFilterEmpList]

    @empName NVARCHAR(500)   

AS BEGIN

    SELECT 
          e2.ID
        , e2.NAME
    FROM (
        SELECT 
              ID = e.employee_id
            , NAME = e.name_1 + ' ' + e.surname -- + ' ' + e.first_name + ....  
        FROM dbo.Employees e
    ) e2
    WHERE e2.NAME LIKE '%'+ @empName + '%'

END
于 2013-04-22T05:55:40.313 回答