Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Porque no respeta el %

Estas en el tema de Porque no respeta el % en el foro de Mysql en Foros del Web. Hola Hago esta consulta a MySQL SELECT * FROM `productos` WHERE `clasif` = 'Disco Duro' OR `clasif` = 'Memorias RAM' AND `nombre` LIKE '512%' Sin ...
  #1 (permalink)  
Antiguo 17/12/2006, 00:03
 
Fecha de Ingreso: febrero-2005
Mensajes: 626
Antigüedad: 19 años, 2 meses
Puntos: 10
Porque no respeta el %

Hola

Hago esta consulta a MySQL

SELECT * FROM `productos` WHERE `clasif` = 'Disco Duro' OR `clasif` = 'Memorias RAM' AND `nombre` LIKE '512%'

Sin embargo si le pongo el porcentaje al final o al principio, me obtiene demasiados registros y no me respeta el signo de porcentaje ya sea al final o al principio pense que era el problema de mi aplicacion pero despues la probe en phpMyAdmin y me di cuenta que el problema es directamente SQL, entonces no hay alguna manera de hacer mas sensitivo esto? a los porcentaje, al hecho de buscar que la cadena sea buscada al principio, al final o contenida en el campo
  #2 (permalink)  
Antiguo 17/12/2006, 09:19
 
Fecha de Ingreso: febrero-2005
Mensajes: 626
Antigüedad: 19 años, 2 meses
Puntos: 10
Re: Porque no respeta el %

El problema para LIKE 'cadena%' y LIKE '%cadena' se soluciona poniendo primero el LIKE y luego las declaracion que tienen iguales

El problema es para LIKE '%cadena%' que te muestra resultados que ni tienen la cadena contenida, esta inexactitud tambien se presenta con el NOT LIKE '%cadena' y en el NOT LIKE 'cadena%' y extraño pero en el NOT LIKE '%cadena%', funciona bien

A ver si alguien me puede decir como hacerle gracias de antemano
  #3 (permalink)  
Antiguo 17/12/2006, 09:50
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Re: Porque no respeta el %

No comprendo qué queres hacer pero debe funcionar si sabes como usar el comodín %

En ese SELECT si pones LIKE '512%', va a devolverte TODOS los nombres que empicen con 512 y cualquier cosa al final. Si lo pones '%512', va a devolverte TODO lo que tenga 512 al final.

¿Qué es lo que no te respeta o qué necesitas EXACTAMENTE hacer???

Ahora, para NO confundirte, convinando OR y AND, te recomiendo encierren entre paréntesis redondos la sentencia porque puede que ahí esté tu problema. ¿Sabes la prioridad de AND y OR?

Por te puede arrojar diferentes resultados con la misma sentencia si NO sabes diferenciarla.

Es diferente esto:
Código PHP:
SELECT FROM `productos`
WHERE (`clasif` = 'Disco Duro' OR `clasif` = 'Memorias RAM')
AND `
nombreLIKE '512%' 
A esto:
Código PHP:
SELECT FROM `productos`
WHERE `clasif` = 'Disco Duro'
OR (`clasif` = 'Memorias RAM' AND `nombreLIKE '512%'
Los paréntesis indican que primero se ejecute lo que está encerrado entre ellos y luego continúe con las otras sentencias fuera de ellos.

Sin los paréntesis, ¿cómo sabes que la ejecución del SELECT se está haciendo a como lo necesitas?
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:13.