处理SQL变量,以便以一种方式处理一个值,而以不同方式处理所有其他值

时间:2015-08-20 09:04:16

标签: sql

我正在制作一个sql脚本,用于获取表格中的所有条目或只是一些。由于程序的限制,我只能使用sql来获取结果。
在脚本运行之前,您可以设置变量。这些不能为空。 问题是我需要在变量中加入一个值,然后在WHERE中搜索spesified数字或所有数字。

@_PARA_DATE=From date#01.01.2015
@_PARA_MIN_PERC=%#1
@_PARA_PLACE_NUMBER=PLACE#All results

select *
from 
Table_1 
INNER JOIN Table_2 ON Table2_nr = table_1.nr
INNER JOIN Table_3 ON Table3_nr = table_1.nr
INNER JOIN Table_4 ON Table4_nr = table_1.nr
WHERE 
(@_PARA_DATE BETWEEN Table_1.fromdate AND Table_1.todate) 
AND table_1.perc >= @_PARA_min_perc

if @_PARA_PLACE_NUMBER <> 'All results'
AND table_1.placenr = @_PARA_PLACE_NUMBER

2 个答案:

答案 0 :(得分:0)

如果你可以设置@number = NULL,那么WHERE子句很简单:

WHERE Isnull(@number, id_number) = id_number

这样,如果你传递@number&lt;&gt; null然后where子句返回@number = id_number否则它将返回id_number = id_number [tautology]所以一切。

答案 1 :(得分:0)

你的WHERE子句应该是

WHERE
(@number = 'some number' and id_number = @number) OR
(@number = 'everything')

请注意,您可以使用NULL来更好地处理

 WHERE
    (@number is not null and id_number = @number) OR
    (@number is null)

如果要返回所有行,只需将NULL传递给变量