2012-06-27 60 views
0

我正在使用RIA服務和Mysql數據庫的Silverlight 5環境中工作。我有一張桌子,裏面有大約20個不同的地方。我需要使用Contains或LIKE來檢查每個記錄中是否有可能的字符串匹配,在每個可能的二十個位置中的一個匹配中。如果在記錄中找到位置匹配,我只需要該記錄中的幾個字段。不是來自其他19個地點的數據。如果在檢查的記錄中沒有匹配,則不保存任何內容。我對RIA感到茫然。我可以寫一個查詢20或者,但是當一個匹配被發現時,整個記錄將被返回,這將顯示在一個數據網格中,並且由於搜索字段可能位於20個位置中的1箇中,我不能只隱藏不需要的字段。嵌套的循環例程可以保存在Mysql函數或過程中,以便實體框架可以查詢它嗎?如果是這樣,你能否給我一個正確的方向的語法推動。 Thx提前。MySql存儲過程或函數?

+0

爲什麼不先閱讀[documentation](http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html)? – Jocelyn

+0

這是20箇中的任何一個字符串嗎?如果是這樣,你只需連接它們,並做一個這樣的事情。儘管如此,性能將遠沒有那麼出色。 –

回答

0

例如,爲了讓我假設列名爲col1col2,...,col20your_table

以下查詢可能會幫助您獲取記錄中第一個找到的匹配列值。

SET @criteria='%searh criteria%'; -- search string 
SET @none_matched=NULL; -- use this alternative if none matched 
SELECT 
IF(col1 like @criteria, col1, 
    IF(col2 like @criteria, col2, 
     IF(col3 like @criteria, col3, 
--   // 'if's until 'col20' 
      @none_matched) ...) as 'your_label' -- make sure you have 20 closing braces 
FROM your_table; 

我不確定使用此類查詢的性能。
或者,您可以依賴於存儲過程。