Búsqueda strings


#1

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


#2

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


#3

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?


#4

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


#5

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


#6

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