2016-10-10 82 views
0

喜逢之一,当我EXCUTE 我有无效的列名称表达式2,表达式3我有这样的查询代码从数据库中检索数据,Expr4的SQL Server:无效的列名称使用别名时

SELECT Isnull(EMP_NUM, 0)   AS Expr1, 
     Isnull(Full_name, 0)   AS Expr2, 
     Isnull(Mother_Name, 0)  AS Expr3, 
     Isnull(Date_of_Birth, 0)  AS Expr4, 
     Isnull(Province_of_birth, 0) AS Expr5, 
     Isnull(Job, 0)    AS Expr6 
FROM [EMPLOY Main Table] 
WHERE (Expr2 LIKE N'%' + @Full_name + N'%') 
     OR (@Full_name IS NULL) 
     OR (Expr3 LIKE N'%' + @Mother_Name + N'%') 
     OR (@Mother_Name IS NULL) 
     OR (Expr4 LIKE N'%' + @Date_of_Birth + N'%') 
     OR (@Date_of_Birth IS NULL) 
+2

你不能在where子句中使用别名。请使用列名称。只有订购你可以别名 – Hiten004

+0

@ Hiten004你可以告诉我怎么做 –

+0

@Prdp你建议做什么? –

回答

0

这里

SELECT ISNULL(EMP_NUM, '0') AS Expr1 
    , ISNULL(Full_name, '0') AS Expr2 
    , ISNULL(Mother_Name, '0') AS Expr3 
    , ISNULL(Date_of_Birth, '0') AS Expr4 
    , ISNULL(Province_of_birth, '0') AS Expr5 
    , ISNULL(Job, '0') AS Expr6 
    FROM   [EMPLOY Main Table] 
    WHERE 
     (Full_name LIKE N'%' + @Full_name + N'%') 
     OR 
     (@Full_name IS NULL) 
     OR 
     (Mother_Name LIKE N'%' + @Mother_Name + N'%') 
     OR 
     (@Mother_Name IS NULL) 
     OR 
     (Date_of_Birth LIKE N'%' + @Date_of_Birth + N'%') 
     OR 
     (@Date_of_Birth IS NULL) 
+0

该代码返回来自DB –

0

也许你需要的代码,将与变量列表底部的脚本来改变你的where子句像

SELECT ISNULL(EMP_NUM, 0) AS Expr1 
    ,ISNULL(Full_name, 0) AS Expr2 
    ,ISNULL(Mother_Name, 0) AS Expr3 
    ,Date_of_Birth AS Expr4 
    ,ISNULL(Province_of_birth, 0) AS Expr5 
    ,ISNULL(Job, 0) AS Expr6 
FROM [EMPLOY Main Table] 
WHERE (Full_name LIKE N'%' + @Full_name + N'%' OR @Full_name IS NULL) and 
(Mother_Name LIKE N'%' + @Mother_Name + N'%' OR @Mother_Name IS NULL) and 
    (Date_of_Birth = @Date_of_Birth OR @Date_of_Birth IS NULL) 
+0

的所有数据我现在尝试... –