PDA

Ver la Versión Completa : Like en MySql


Alejandro73
05-07-2013, 22:55:43
Estimados

Necesito realizar una consulta en Mysql, donde paso dos parametros, en uno de ellos lo debo utilizar LIKE, el punto es que no tengo claro como utilizarlo y no he encontrado ayuda.
SELECT NOMBRE, CUENTA_CORREO
FROM NOMBRES, CORREOS
WHERE NOMBRE=:VARIABLE_NOMBRE
AND RUT LIKE '%787%'
Se entiende que el valor "787" esta representado por el parametro que contiene el rut a buscar

Desde ya muchas gracias

AzidRain
06-07-2013, 01:02:49
el like es el equivalente a que se parezca a. Para parametrizarlo tienes que hacer esto:

SELECT NOMBRE, CUENTA_CORREO
FROM NOMBRES, CORREOS
WHERE NOMBRE=:VARIABLE_NOMBRE
AND RUT LIKE concat("%",:VARIABLE_RUT,"%")


Lo puse de memoria por lo que revísalo primero, recuerda que los campos nombre y RUT deben estar indexados para mejorar la velocidad del query.

Alejandro73
08-07-2013, 15:27:36
Estimado

gracias por tu respuesta, pero entrega el siguiente error ORA-00920: operador relacional no válido

olbeup
08-07-2013, 15:41:26
No era MySQL :confused: el error que has puesto es de ORACLE :eek:

Un saludo.

Alejandro73
08-07-2013, 20:50:36
Estimado olbeup (http://clubdelphi.com/foros/member.php?u=6527), tienes toda la razón

Gracias

Casimiro Notevi
08-07-2013, 20:52:57
Estimado olbeup (http://clubdelphi.com/foros/member.php?u=6527), tienes toda la razón
Gracias

¿Entonces es oracle y no es mysql?, confírmalo para mover el hilo de foro ;)

Alejandro73
08-07-2013, 20:55:51
Estimado

La consulta es sobre MySql.

Casimiro Notevi
08-07-2013, 21:03:58
Estimado
La consulta es sobre MySql.

Entonces ¿el error de oracle?

Alejandro73
08-07-2013, 21:13:11
Estimado

Casimiro Notevi, por error ejecute en ORACLE en lugar de MySql, quedo claro o debo especificar aun más.

Saludos

Casimiro Notevi
08-07-2013, 21:23:21
Estimado
Casimiro Notevi, por error ejecute en ORACLE en lugar de MySql, quedo claro o debo especificar aun más.
Saludos

Evidentemente, sí debes especificar aún más.
Si el error es de mysql y pones el de oracle, entonces deberías copiarnos el mensaje que te sale en mysql :)

ozsWizzard
09-07-2013, 05:18:46
Y en cualquiera de las dos bases de datos, ¿no es más fácil pasrale directamente el carácter de patrón a la variable y hacer esto?


SELECT NOMBRE, CUENTA_CORREO
FROM NOMBRES, CORREOS
WHERE NOMBRE = :VARIABLE_NOMBRE
AND RUT LIKE : VARIABLE_RUT


Donde :VARIABLE_RUT sea igual a "%787%"

AzidRain
09-07-2013, 23:41:25
Es lo mismo como tu dices, solo que de la forma que sugerí dejamos el armado de la cadena al motor y en el otro caso hay que hacerlo por código antes de pasarlo al motor. Depende de como quiera implementarse. He visto programas que incluso permiten al usuario poner los caracteres comodines ("%") al momento de buscar por un campo de texto, pero en lo personal no me gusta que el usuario final tenga que meterse con el sql por lo que casi siempre limpio la cadena que capturó el usuario antes de pasarla al motor por aquello del SQL injection.