2015-04-21 38 views
0

我正在編寫java程序並基於用戶輸入我必須執行操作。如何在SQL Server中編寫查詢來選擇所有內容

如果用戶給我的id(假設ID = 3),那麼我必須執行

select emp_name 
from employee 
where empid = 3 

否則,如果用戶沒有提供身份證,然後我必須表現出一切從表(這裏是我的問題如何實現這一點)

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

我不能排除where子句,因爲我使用'準備語句',只是根據用戶輸入分配值。 id是類型'數字'我也想知道如何匹配它,如果id是類型'varchar'

+1

我沒有在您的問題中看到任何Java代碼。 –

+0

empid = empid應該這樣做 – Vyncent

回答

2

你應該使用參數,不知道Java幫助那部分,但你可以提供NULL像這樣查詢。

select emp_name 
from employee 
where empid = (case when @parameter is null then empid else @parameter end) 
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注入攻擊...;)

0

如果參數是NULLempid不提供,你可以做以下:

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

你也可以試試這個

Declare @empId int = 0; 

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

這對我有效我已檢查varchar

相關問題