2013-04-24 33 views
3

我想使用select語句篩選表數據,我有四列,並且我還有四個文本框可以在每列中進行搜索,並且我可以在任何框中輸入值(es) ,當我在文本框中輸入值時,我想返回與我輸入的值相匹配的記錄,我該怎麼做?使用select sql語句篩選表數據

ALTER PROCEDURE dbo.test_search 

    (
     @ID int, 
    @FirstName nvarchar(50), 
    @MiddleName nvarchar(50), 
    @LastName nvarchar(50) 
    ) 

AS 
    SELECT  ID, FirstName, MiddleName, LastName 
    FROM   StudentsInformation 
    WHERE (@ID IS NULL OR StudentsInformation.ID = @ID) AND 
      (@FirstName IS NULL OR StudentsInformation.FirstName = @FirstName)AND 
      (@MiddleName IS NULL OR StudentsInformation.MiddleName = @MiddleName)AND 
      (@LastName IS NULL OR StudentsInformation.LastName = @LastName) 
    RETURN 
+0

向我們展示一些代碼,你嘗試過什麼? – Daanvn 2013-04-24 07:11:23

+0

你想用四列數據檢查值嗎? – 2013-04-24 07:15:57

+0

@Daanvn我試過這段代碼,它返回一條記錄 – Alaa 2013-04-24 07:16:08

回答

2

編輯:

SELECT 
id 
, firstname 
, middlename 
, lastname  
FROM studentsinformation 
WHERE id = @id   
OR firstname LIKE '%' + @firstname + '%' 
    OR middlename LIKE '%' + @middlename + '%' 
    OR lastname LIKE '%' + @lastname + '%' 

可以插拔或爲,如果你想選擇對所有複選框真實記錄。

+0

但我想在一個GridView中查看它們,我可以這樣做嗎? – Alaa 2013-04-24 07:31:11

+0

我沒有正確地看到你,你想要結果從所有4複選框合併搜索結果? – kyooryu 2013-04-24 07:44:47

+0

是的,我的意思是 – Alaa 2013-04-24 08:00:10

0

首先,你需要找到text-box其中搜索字符串傳遞。

根據文本框查詢可以寫在相關的column

select * from table_name where column like '%text-box value%' 

編輯

SELECT ID,FirstName,MiddleName,LastName 
FROM StudentsInformation 
WHERE 1=1 
ID=(case when @ID <>0 AND @ID IS NOT NULL then @ID else ID end) 
and FirstName=(case when @FirstName<>'' and @FirstName IS NULL then @FirstName 
else FirstName) 
and MiddleName=(case when @MiddleName<>'' and @MiddleName IS NULL then @MiddleName 
else MiddleName) 
and LastName=(case when @LastName<>'' and @LastName IS NULL then @LastName 
else LastName) 
+0

請檢查我的bove代碼,我想過濾取決於多個參數,並且我發送它們取決於用戶在文本框中輸入值 – Alaa 2013-04-24 07:34:15

+0

@Alaa請查看我的更新後的查詢。 – Luv 2013-04-24 08:46:03

+0

它給了我錯誤「錯誤的語法附近的關鍵字和」 – Alaa 2013-04-24 09:14:09

0

語法取決於您使用的編程語言。

但一般:

string sql="select * from tableName where" 

if((txt1.Text!="")&&(sql=="select * from tableName where") 
sql=sql+"colName like % @txt1 %" 
else 
sql=sql+" and colName like % @txt1 %" 



if((txt2.Text!="")&&(sql=="select * from tableName where") 
sql=sql+"colName like % @txt2 %" 
else 
sql=sql+" and colName like % @txt2 %" 


if((txt3.Text!="")&&(sql=="select * from tableName where") 
sql=sql+"colName like % @txt3 %" 
else 
sql=sql+" and colName like % @txt3 %" 

做這樣的。

+0

使用參數會很好... – kyooryu 2013-04-24 07:18:54

+0

是啊,definitly,即時編輯它 – Freelancer 2013-04-24 07:19:54

+0

@kyooryu做到了,thanx很多 – Freelancer 2013-04-24 07:22:29

0

我希望這將工作:

Select * from <table-name> 
where 
<Column-name1> Like 'TextBox1%' 
or 
<Column-name2> Like 'TextBox2%' 
or 
<Column-name3> Like 'TextBox2%' 
or 
<Column-name4> Like 'TextBox4%' 
+0

我累了,但它沒有工作 – Alaa 2013-04-24 07:44:06

+0

它返回所有的列,沒有過濾它們 – Alaa 2013-04-24 08:24:14