【问题标题】:SQL Server: Invalid Column Name when using Alias Name [duplicate]SQL Server:使用别名时列名无效[重复]
【发布时间】:2016-10-10 16:27:32
【问题描述】:

大家好,我有这个查询代码可以在我执行时从数据库中检索数据 我有无效的列名 Expr2,Expr3,Expr4

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 ) 

【问题讨论】:

  • 不能在 where 子句中使用别名。请使用列名。只有order by才能别名
  • @Hiten004 你能告诉我怎么做吗
  • @Prdp 你建议做什么??
  • 根据输入参数添加样本数据和预期结果。
  • 当我在没有别名的情况下尝试它时,它可以工作并且给我零作为空记录,但我需要使用 ISNULL("column_Name",0)

标签: sql asp.net sql-server


【解决方案1】:

这是在底部脚本中带有变量列表的代码

 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)

【讨论】:

  • 该代码返回数据库中的所有数据
【解决方案2】:

也许您需要更改 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)

【讨论】:

  • 我现在试试...
猜你喜欢
  • 2013-09-27
  • 1970-01-01
  • 2021-10-29
  • 2018-06-07
  • 1970-01-01
  • 2013-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多