# BÃºsqueda strings

**URL:** <https://www.ruby-forum.com/t/ba-squeda-strings/105289>\
**Category:** ES\
**Created:** [May 28, 2007, 2:11pm UTC](https://www.ruby-forum.com/t/ba-squeda-strings/105289 "2007-05-28T14:11:49Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![diegoson](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ba9def/32.png) [@diegoson](https://www.ruby-forum.com/u/diegoson)\
**Post date:** [May 28, 2007, 2:11pm UTC](https://www.ruby-forum.com/t/ba-squeda-strings/105289/1 "2007-05-28T14:11:49Z")

</div>

Tengo una variable que proviene de un formulario, por ejemplo  
datos=“ATEM, FISI” y deseo seleccionar de mi base datos MySQL el  
registro que corresponde al campo asignaturas=“MATEMATICAS, FISICA”.  
AgradecerÃ­a me fuera apuntada alguna tÃ©cnica para realizar dicha  
bÃºqueda.

Gracias de antemano,

Diego

---

<div class="post-metadata">

**Author:** ![diegoson](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ba9def/32.png) [@diegoson](https://www.ruby-forum.com/u/diegoson)\
**Post date:** [May 28, 2007, 2:15pm UTC](https://www.ruby-forum.com/t/ba-squeda-strings/105289/2 "2007-05-28T14:15:45Z")

</div>

Diego MuÃ±oz wrote:

> Tengo una variable que proviene de un formulario, por ejemplo  
> datos=“ATEM, FISI” y deseo seleccionar de mi base datos MySQL el  
> registro que corresponde al campo asignaturas=“MATEMATICAS, FISICA”.  
> AgradecerÃ­a me fuera apuntada alguna tÃ©cnica para realizar dicha  
> bÃºqueda.
> 
> Gracias de antemano,
> 
> Diego

Donde quise decir datos=“ATEM, FISI” quise decir datos=“ATEM FISI”

Gracias por su atenciÃ³n,

Diego

---

<div class="post-metadata">

**Author:** ![diegoson](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ba9def/32.png) [@diegoson](https://www.ruby-forum.com/u/diegoson)\
**Post date:** [May 28, 2007, 4:20pm UTC](https://www.ruby-forum.com/t/ba-squeda-strings/105289/3 "2007-05-28T16:20:31Z")

</div>

No sÃ© si te he entendido, pero puede que esto te sirva

en el controlador :

filtro = params[:datos].gsub(" “,”%") —\> con esto le pones el comodin  
%  
en todos los espacios  
filtro = “%”+filtro+"%"  
Asignatura.find :all (:conditions =\> [“campo\_asignatura like ?”, filtro  
] )

Es algo asÃ­ lo que quieres?

---

<div class="post-metadata">

**Author:** ![diegoson](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ba9def/32.png) [@diegoson](https://www.ruby-forum.com/u/diegoson)\
**Post date:** [May 28, 2007, 5:37pm UTC](https://www.ruby-forum.com/t/ba-squeda-strings/105289/4 "2007-05-28T17:37:39Z")

</div>

Pues eso serÃ­a algo asÃ­ como:

condiciones = [] --\> creas un array vacÃ­o  
for dato in params[:datos].split(" ") --\> lo separas por el espacio  
condiciones \<\< “nombre like (’%#{dato}%’) " —\> vas poniendo las  
condiciones para que filtre por el mismo campo  
end  
Asignatura.find :all (:conditions =\> condiciones.join(” and ") )

con eso deberÃ­a funcionarte

---

<div class="post-metadata">

**Author:** ![diegoson](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ba9def/32.png) [@diegoson](https://www.ruby-forum.com/u/diegoson)\
**Post date:** [May 28, 2007, 4:55pm UTC](https://www.ruby-forum.com/t/ba-squeda-strings/105289/5 "2007-05-28T16:55:38Z")

</div>

Luis V. wrote:

> No sÃ© si te he entendido, pero puede que esto te sirva
> 
> en el controlador :
> 
> filtro = params[:datos].gsub(" “,”%") —\> con esto le pones el comodin  
> %  
> en todos los espacios  
> filtro = “%”+filtro+"%"  
> Asignatura.find :all (:conditions =\> [“campo\_asignatura like ?”, filtro  
> ] )
> 
> Es algo asÃ­ lo que quieres?

Luis V. wrote:

> No sÃ© si te he entendido, pero puede que esto te sirva
> 
> en el controlador :
> 
> filtro = params[:datos].gsub(" “,”%") —\> con esto le pones el comodin  
> %  
> en todos los espacios  
> filtro = “%”+filtro+"%"  
> Asignatura.find :all (:conditions =\> [“campo\_asignatura like ?”, filtro  
> ] )
> 
> Es algo asÃ­ lo que quieres?

Antes de nada agradecer tu pronta respuesta. No obstante no es  
exactamente lo que quiero. Me explico imaginad que tenÃ©is un campo con  
los apellidos y nombre. Ejemplo “PEREZ, JOSÃ‰”. Desde un formulario se  
solicita la bÃºsqueda “PER JOS” o “JOS PER”. Es obvio que lo que se  
pretende es  
buscar la ficha de PEREZ, JOSÃ‰ a travÃ©s de una solicitud simplificada  
de  
datos, en este caso las tres primera letras de apellido nombre y, por  
supuesto obviando la coma.

Gracias,

Diego

---

<div class="post-metadata">

**Author:** ![diegoson](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ba9def/32.png) [@diegoson](https://www.ruby-forum.com/u/diegoson)\
**Post date:** [May 28, 2007, 10:17pm UTC](https://www.ruby-forum.com/t/ba-squeda-strings/105289/6 "2007-05-28T22:17:01Z")

</div>

Luis V. wrote:

> Pues eso serÃ­a algo asÃ­ como:
> 
> condiciones = [] --\> creas un array vacÃ­o  
> for dato in params[:datos].split(" ") --\> lo separas por el espacio  
> condiciones \<\< “nombre like (’%#{dato}%’) " —\> vas poniendo las  
> condiciones para que filtre por el mismo campo  
> end  
> Asignatura.find :all (:conditions =\> condiciones.join(” and ") )
> 
> con eso deberÃ­a funcionarte

La soluciÃ³n que apuntas es la correcta. Muchas gracias por tu  
colaboraciÃ³n.

Diego
