我有一个存储过程需要根据用户输入返回行。在参数上可以有3个不同的值。该值由用户从提示中提供,可以是' A' B' AB' AB' AB' AB' AB' AB' AB' AB' AB' AB' AB' AB' AB' AB' AB' B.
这是测试查询:
declare @prefix char(10) = 'Region'
declare @region char(2) = '90'
declare @year int = 2015
declare @month int = 03
declare @day int = 01
declare @option char(1) = null -- default, can be 'A', 'B', or both.
select
t1.ControlNumber,
t1.CustomerName,
t1.CustomerStatement
case
when sr.ControlNUmber is not null
then rtrim(ltrim(@prefix))
+ @region+ '\' + 'Folder1\'
else rtrim(ltrim(@prefix)) +
+ @region+ '\' + 'Folder2\'
end as Location
from Table1 t1
inner join Table2 t2 ON t1.CustomerStatement = t2.CustomerStatement
left join tblControl c on t1.ControlNumber = c.ControlNumber
where (s.StatementOption = @sOption)
and s.FileYear = @FILEYEAR
and s.FileMonth = @FILEMONTH
and s.FileDay = @FILEDAY
and s.BackendType = 1
and s.Region = @REGION
我正在寻找编写where
条款的方式,以便能够测试3个选项中的一个(' A',' B'或' AB')
在我的c#代码中,我将@option
参数发送为nullable
:
SqlParameter sOption = command.Parameters.Add("@sOption", SqlDbType.Char);
sOption.Direction = ParameterDirection.Input;
sOption.Value = (object)option ?? DBNull.Value;
因此,如果用户输入' AB'选项默认为null:
switch (option)
{
case "E":
option = "S";
break;
case "P":
option = "N";
break;
default:
option = null;
break;
}
意味着用户想要获得具有两种选项的记录。
最好的成就是什么。
我希望我明确提出问题