Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Like en MySql (https://www.clubdelphi.com/foros/showthread.php?t=83604)

Alejandro73 05-07-2013 22:55:43

Like en MySql
 
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.
Código SQL [-]
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:
Código SQL [-]
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, tienes toda la razón

Gracias

Casimiro Notevi 08-07-2013 20:52:57

Cita:

Empezado por Alejandro73 (Mensaje 463433)
Estimado olbeup, 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

Cita:

Empezado por Alejandro73 (Mensaje 463436)
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

Cita:

Empezado por Alejandro73 (Mensaje 463441)
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?

Código SQL [-]
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.


La franja horaria es GMT +2. Ahora son las 06:20:51.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi