2012-06-27 63 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; 

我不确定使用此类查询的性能。
或者,您可以依赖于存储过程。