2014-11-14 53 views
0

在SQL Server中,您可以在.NET上添加一条SQL语句,并使用'或'或'和'。如果SQL Server存储过程中的其他语句

我被卡住了如何在SQL Server存储过程中执行此操作。

问:

  1. 这是什么叫什么,你添加SQL语句一起?我有一种感觉,它开始于'c'concocations?

  2. 我相信我接近下面的代码有一个'变量'SQL?

代码:

BEGIN 
    SELECT * 
    FROM TblEmployee 
    WHERE 
     FirstName LIKE '%' + LTRIM(RTRIM((@sFirstName))) + '%' 
     or 
     Surname LIKE '%' + LTRIM(RTRIM((@sSurname))) + '%' 
     and 
     IF (LTRIM(RTRIM((@sOfficeBase))) = 'xyz1234') 
     and OfficeBase = LTRIM(RTRIM((@sOfficeBase))) 
     ELSE 
     or 
     OfficeBase= LTRIM(RTRIM((@sOfficeBase))) 
END 

有simular查询,如If else in stored procedure sql server

但我有一种感觉,我搜索的 '错误' 的问题。在此先感谢

+1

*级联*(虽然这并不能真正说明的if/else分支) – 2014-11-14 13:30:36

+2

'ELSE或'/'IF和'是无意义的,格式是'IF/ELSE [OR/AND ...] “也许你最好用文字描述你想要的逻辑,因为它很难解释你所显示的内容。 – 2014-11-14 13:31:10

+0

我想添加到基于来自用户的值的SELECT语句。如果该值匹配我希望SELECT语句添加'和x = y'语句,否则它应该是'或'语句。 – indofraiser 2014-11-14 14:07:29

回答

1

Where子句允许您嵌入条件逻辑 - 您不需要if/then/else,这同样适用,因为afaik,where子句中的任何SQL方言都不支持。

BEGIN 
    SELECT * 
    FROM TblEmployee 
    WHERE 
     FirstName LIKE '%' + LTRIM(RTRIM((@sFirstName))) + '%' 
     or 
     Surname LIKE '%' + LTRIM(RTRIM((@sSurname))) + '%' 
     and 
     (OfficeBase = 'xyz1234' 
     or 
     OfficeBase= LTRIM(RTRIM((@sOfficeBase))) 
END 
+0

只是为了澄清,如果@sOfficeBase的值是'xyz1234',将只使用'和'语句,否则将使用'或'语句? – indofraiser 2014-11-14 13:44:59

+0

只需重新阅读 - 括号内第一位的办公室比较是多余的,所以我已将其删除。应该更易于阅读 - 方括号的工作方式与任何语言的方式一样。 – 2014-11-14 14:55:03

0

我很确定你原来的查询中有一些丢失的括号。不知道为什么要将LTRIM和RTRIM添加到您的参数中。在黑暗中拍摄我怀疑你可以归结为你的查询。

SELECT * --This should be the column names actually needed, * is not good for production code 
FROM TblEmployee 
WHERE 
(
    FirstName LIKE '%' + @sFirstName + '%' 
    or 
    Surname LIKE '%' + @sSurname + '%' 
) 
and OfficeBase in ('xyz1234', @sOfficeBase) 
相关问题