我正在编写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'
,我也想知道如何匹配它答案 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