2011-02-23 46 views
0

如何使用DevArt dotConnect for Oracle庫做WHERE COLUMN LIKE '%SearchTerm%'DevArt dotConnect for Oracle - 如何使用參數執行WHERE LIKE子句?

對SearchTerm理想地使用CommandParameter


我已經試過沒有快樂如下:

cmd.CommandText = 
    "SELECT ID, COLUMN_A, COLUMN_B FROM TABLE_A 
    WHERE COLUMN_A LIKE :SearchTerm"; 


我知道了有工作:

cmd.CommandText = 
    "SELECT ID, COLUMN_A, COLUMN_B FROM TABLE_A 
    WHERE COLUMN_A LIKE :SearchTerm"; 

cmd.Parameters.AddWithValue("SearchTerm", "%" + term.Replace('%', ' ') + "%"); 


但我不滿意%標誌 - 有沒有正確或更好的方法?

回答

2

嘗試這種解決方案:

cmd.CommandText = 
    "SELECT ID, COLUMN_A, COLUMN_B 
    FROM TABLE_A 
    WHERE COLUMN_A LIKE '%' || :SearchTerm || '%'"; 

cmd.Parameters.AddWithValue("SearchTerm", term); 
2

Oracle本身不喜歡「Where column LIKE%:searchterm%」,所以如果你需要那裏的通配符,那麼它們需要作爲參數的一部分添加。

您可以通過在要搜索的列上設置full text index來避免它,然後使用CONTAINS來代替,而不需要通配符。這也是一種更強大的搜索方法,但設置起來更復雜。

+0

這同樣適用於大多數ADO的驅動程序。 '%'應該總是在參數中。 – jgauffin 2011-02-23 13:11:36

相關問題