Dot*_*row 1 sql t-sql sql-server
我有一个这样的存储过程:
ALTER PROCEDURE [dbo].[hr_SearchVacanciesAdmin]
@SearchText NVARCHAR(50) = NULL,
@CompanyName NVARCHAR(100) = NULL,
@DutyStationID INT = NULL,
@VacancyCategoryIDs VARCHAR(1000) = NULL,
@Status INT,
@Language INT = 1
BEGIN
SELECT * from table
where
deleted = 0
and status = @status
and catname = &searchtext
..
..
..
END
Run Code Online (Sandbox Code Playgroud)
我想在where where条件中添加case语句,这样如果@status = 4则不检查delete =.我试过跟随但不工作
WHERE
1 = CASE
WHEN @Status = 4
THEN @status
WHEN dbo.hr_Vacancies.Deleted = 0
--Search Criteria
AND dbo.hr_Vacancies.Status = @Status
THEN @Status
END
Run Code Online (Sandbox Code Playgroud)
您不需要CASE语句来实现此功能.以下会很好:
SELECT *
from table
where (deleted = 0 OR @status=4)
and status = @status
and catname = @searchtext
Run Code Online (Sandbox Code Playgroud)
另请注意,您的代码&searchtext在where子句中引用,但这应该是@searchtext根据此答案(即前缀@没有&).
| 归档时间: |
|
| 查看次数: |
1459 次 |
| 最近记录: |