T-SQL:WHERE子句-如何根据输入变量进行调整
使用SQLServer2008。我的存储过程中有一个名为“@State”的输入参数。参数基本上可以是“--All--”,也可以包含要筛选的状态 因此,如果它是'--All--',我不想将@State合并到where子句中。否则,我希望它根据提供的@State进行过滤。所以基本上它可能会导致T-SQL:WHERE子句-如何根据输入变量进行调整,sql,sql-server,tsql,Sql,Sql Server,Tsql,使用SQLServer2008。我的存储过程中有一个名为“@State”的输入参数。参数基本上可以是“--All--”,也可以包含要筛选的状态 因此,如果它是'--All--',我不想将@State合并到where子句中。否则,我希望它根据提供的@State进行过滤。所以基本上它可能会导致 SELECT * FROM MyTable WHERE Type='AAA' AND Status=@Status 或者,如果他们通过“所有--” 如何在存储过程中执行此操作?我以为您输入了一个错误。它应该
SELECT * FROM MyTable
WHERE Type='AAA' AND Status=@Status
或者,如果他们通过“所有--”
如何在存储过程中执行此操作?我以为您输入了一个错误。它应该是@State,而不是@Status。这个简单的查询可能不是您想要的,因为您希望在需求中包含两个sql语句
SELECT
*
FROM
MyTable
WHERE
Type='AAA'
AND Status = CASE @Status WHEN '--All--' THEN Status ELSE @Status END
SELECT * FROM MyTable
WHERE Type='AAA' AND (@State='--All--' or State=@State)
我以为你打错了。它应该是@State,而不是@Status。这个简单的查询可能不是您想要的,因为您希望在需求中包含两个sql语句
SELECT * FROM MyTable
WHERE Type='AAA' AND (@State='--All--' or State=@State)
或者
你可以让它变得更简单:
SELECT * FROM MyTable
WHERE Type='AAA' AND @State in ('--All--', State)
无需在存储过程中执行此操作,除非绝对必要(或者如果业务/编码实践要求您这样做)。或
你可以让它变得更简单:
SELECT * FROM MyTable
WHERE Type='AAA' AND @State in ('--All--', State)
无需在存储过程中执行此操作,除非绝对必要(或者如果业务/编码实践要求您这样做)