如何在SQL Server中编写查询以选择所有内容

时间:2015-04-21 09:48:04

标签: sql sql-server

我正在编写java程序,根据用户输入我必须执行操作。

如果用户给我id(假设id = 3),那么我必须执行

select emp_name 
from employee 
where empid = 3

否则如果用户没有提供id,那么我必须从表中显示所有内容(这是我的问题如何实现这一点)

select emp_name 
from employee 
where empid = 'this should match everything'

我不能排除where子句,因为我正在使用'准​​备好的陈述'并根据用户输入分配值。 id的类型为' number'如果id属于' varchar'

,我也想知道如何匹配它

5 个答案:

答案 0 :(得分:2)

您应该使用参数,不了解Java以帮助该部分,但您可以为查询提供NULL。

select emp_name 
from employee 
where empid = (case when @parameter is null then empid else @parameter end)

答案 1 :(得分:0)

您的问题有几个答案。你可以选择实现你觉得更舒服的东西;

Method 1: Check the user input and construct 2 different queries: 
If the user enters "nothing" execute 
"select emp_name from employee", 
else execute "select emp_name from employee where empid=X", where X is the user input.

Method 2: Use only one query as follows i m wrtting a pseudocode):
if User.Input exists then X=User.Input else X="%"
then execute:
select emp_name from employee where empid like "X"

在任何情况下,请不要忘记清理用户输入以避免SQL注入攻击......;)

答案 2 :(得分:0)

如果在未提供NULL时参数为empid,您可以执行以下操作:

SELECT emp_name 
FROM employee 
WHERE (empid = @parameter OR @parameter IS NULL)

答案 3 :(得分:0)

你也可以尝试这个

Declare @empId int = 0;

select emp_name 
from employee 
where (empid = @empId OR @empId = 0)

答案 4 :(得分:0)

select emp_name 
from employee 
where empid = empid

这对我有用,我检查了varchar