2013-08-30 33 views
0

我與過去1天的SQL查詢戰鬥。我的要求是像我想從用戶的價值觀,並必須通過我的查詢如何通過?在部分搜索的SQL查詢

select * from table1 where column1 like '%healt%' 

但如何使用,當我們從客戶端或UI端傳遞變量相同的查詢?

我用?,@試一下查詢,就像下面給出

select * from table where column like '%' ?'%' 

,但毫無效果。而我面臨的另一個問題是使用OR運算符。

當我按照搜索條件行事時,我想通過賦予任何一個字段的值來顯示結果。但在SQL中,它要求我傳遞的所有列。

select * from table1 where column1 like ? OR cloumn2 like ? 

但是在上面的SQL服務器讓我轉達價值兩個COLUMN1列2。我想通過傳遞任何一列來獲得結果有什麼變化?

請幫我解決這個問題。

+0

你有沒有嘗試只需在''?'的每一邊加'+? –

+0

ya。我已經嘗試過了,但沒有成功。 'select * from table1 where column1 like'%'+?+'%'' – ramakrishnan

+0

如果您希望將'Java'的代碼作爲參數創建SqlQuery,請在您的問題中添加Java標記... – Fabio

回答

0
select * from table where column like '%' + @variable +'%' 

還將相同的變量作爲參數添加到代碼中的命令中。

+0

@variable ??你的意思是我的柱頭名?另一件事,它是否可以適用於字符串變量?因爲它應該使用字符串連接 – ramakrishnan

+0

不,我的意思是價值。在你的例子中「健康」。 如果您使用的是c#,那麼SQLCommand對象具有Parameters屬性。 用您所尋求的值添加一個參數。 – Boranas

+0

這是什麼'@ test','@ variable'表示?那麼這如何幫助我從客戶端或UI端傳遞價值? – ramakrishnan

0
select * from table where where col1 like '%' + @test + '%' 
+0

這是什麼'@ test','@ variable'表示?那麼這如何幫助我從客戶端或UI端傳遞價值? – ramakrishnan

0
Declare @yourParam1 varchar(20), @yourParam2 varchar(20) 

set @yourParam1 = 'healt' 
set @yourParam2 = 'abc' 

select * from table where column1 like '%' + @yourParam + '%' 
or column2 like '%' + @yourParam2 + '%' 

我的測試是這樣的。

我的表

My Table

我的結果

My Result

過程是這樣的

--exec Pr_Test 'healt' --this is your execute SQL 

ALTER PROCEDURE [dbo].[Pr_Test] 
     @yourParam varchar(20), 

AS 
BEGIN 
    select * from table where column like '%' + @yourParam + '%'  
END 

在Java中這樣

String prName ="call "Pr_Test(?, ?)" 
    ..... 
    cs.setString(1, "healt") 
+0

所以每次我都不能設置'@參數值'。它應該從UI側或setvalue函數傳遞。所以當我通過java代碼調用這個查詢時,我必須使用'get()'方法,並且在實現層中我必須使用'set()'方法。所以通過使用?在查詢中,get和set方法可以將值傳遞給?在查詢中。但是,如果從java獲取set方法必須工作,我不能使用來自UI端 – ramakrishnan

+0

的部分搜索從UI端 – very9527

+0

截至目前。爲此我必須通過?在查詢 – ramakrishnan

0

客戶機/ UI側使用SQL parameters

在C#或其他代碼

創建SqlParameter

String searchValue = "test values"; 
// adding '&' signs 
searchValue = String.Format("%{0}%", searchValue); 

SqlParameter sqlParam = new SqlParameter("@YourParam", searchValue); 

在此之後這個參數添加到您的SqlCommand對象

+0

:我特定於java。認爲這可能在C#上工作,但在Java中類似的方法不會幫助 – ramakrishnan

+0

我的答案點只是添加''%'+ yourValue +'%''在創建一個參數 – Fabio