我希望执行搜索以找到与此类似的对象:
echo '<table>';
$stmt = $connection->prepare("SELECT B FROM TABLE ORDER BY B DESC");
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($b);
while($stmt->fetch()){
echo '<tr>
<td>'.$b.'</td>';
$stmt2 = $connection->prepare("SELECT A FROM TABLE GROUP BY A ORDER BY A");
$stmt2->execute();
$stmt2->store_result();
$stmt2->bind_result($a);
while($stmt2->fetch)){
$stmt3 = $connection->prepare("SELECT score FROM TABLE WHERE A = ? AND B = ?");
$stmt3->bind_param("ii", $a, $b);
$stmt3->execute();
$stmt3->store_result();
if($stmt3->num_rows > 0){
$stmt3->bind_result($score);
$stmt3->fetch();
echo '<td>'.$score.'</td>';
} else {
echo '<td>NULL</td>';
}
$stmt3->close();
} /* END OF WHILE LOOP OF SECOND STATEMENT */
$stmt2->close();
echo '</tr>'; /* END OF ROW */
} /* END OF WHILE LOOP */
$stmt->close();
echo '</table>';
使用这样的搜索:
Object(id: 1, example: "abc")
但如果我的搜索字符少于我的对象,则只能使用上面的示例,而不是更多。
答案 0 :(得分:2)
我认为应该是
params[:search] = "abcdef"
Object.where("example LIKE ?", "%#{params[:search]}%")
也可能希望使用ilike
进行不区分大小写的搜索(如果您正在使用postgres)
答案 1 :(得分:0)
通过fuzzily宝石,您可以对已适当检测的ActiveRecord模型进行模糊搜索。
在成堆的字符串中模糊地查找拼写错误,前缀或局部的针。它是Rails的一种基于Trigram的快速,基于数据库的模糊字符串搜索/匹配引擎。
一旦安装了gem,就可以按以下方式检测模型:
class MyStuff < ActiveRecord::Base
# assuming my_stuffs has a 'name' attribute
fuzzily_searchable :name
end
然后您可以执行以下模糊搜索:
MyStuff.find_by_fuzzy_name('Some Name', :limit => 10)
# => records