我有一个存储过程,需要根据输入参数从表列中提取数据。
如果输入参数为'Y'
,我只需要从表列中提取'Y'
的值,如果它是'N'
,则需要提取所有值,而与{{1}无关}或'Y'
或'N'
。
答案 0 :(得分:1)
虽然这可以表示为if ... else条件,但也可以表示为简单的SELECT <ColumnsList>
FROM <TableName>
WHERE <Column> = @Param
OR @Param = 'N'
:
<Column>
请注意,这种方法不会阻止您从'P'
包含@Param
的表中获取所有数据-因为'Y'
的值可以是任何值。
如果只需要'N'
和SELECT <ColumnsList>
FROM <TableName>
WHERE (
<Column> = @Param
AND @Param = 'Y'
)
OR @Param = 'N'
,则应添加另一个条件:
@Param
使用此查询,除'Y'
或'N'
以外的import re
print sum([int(i) for i in re.findall('[0-9]+',open(raw_input('What is the file you want to analyze?\n'),'r').read())])
值都不会返回表中的任何内容。
答案 1 :(得分:0)
您可以编写存储过程where子句,如下所示。
Create Procedure <YourProcedureName>
@Filter Varchar(20)
as
Begin
Select <colName1>
, <ColName2>
, <ColName..N>
From <YourTableName>
where @filter = 'N' OR <YourColName> = @filter
END
您需要替换所需的实际过程名称,以及表和表中的列名。