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

[SOLUCIONADO] consulta con like

Estas en el tema de consulta con like en el foro de Bases de Datos General en Foros del Web. Buenas tardes amigos. Tengo una tabla con varios campos mi duda esta en que, como son varios campos y tengo que escribir todos los campos ...
  #1 (permalink)  
Antiguo 12/08/2015, 15:38
 
Fecha de Ingreso: junio-2013
Mensajes: 68
Antigüedad: 10 años, 10 meses
Puntos: 1
consulta con like

Buenas tardes amigos.
Tengo una tabla con varios campos mi duda esta en que, como son varios campos y tengo que escribir todos los campos con LIKE .

consulta

SELECT * FROM alumnos WHERE nombre LIKE %a% OR apaterno LIKE %a% OR amaterno LIKE %a%

habra algo que busque en todos los campos con LIKE sin tener que escribirlos

espero y darme a entender y gracias
  #2 (permalink)  
Antiguo 13/08/2015, 00:07
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: consulta con like

No sé cuanto tiempo puedas tardar tecleando una consulta así, lo que sí sé es que seguramente sería mucho más rápido que esperar una respuesta en el foro.

Este tema no tiene que ver con PHP, lo muevo a base de datos.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 13/08/2015, 03:24
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: consulta con like

No. Ningún DBMS tiene modo de hacer o qué quieres, porque carece de utilidad global y porque requeriría algoritmos de pésima performance.
No se ha considerado en los DBMS ese tipo de consultas porque, por un lado requeriría barrer el diccionario de datos para determinar sobre qué campos se aplicará (si es que hay una definición al respecto), y además porque en caso de aplicar a un JOIN, obligaría a recorrer todos los campos de todas las tablas de un JOIN, por ejemplo. y si solo consideramos 20 tablas por 50 campos, significaría de entrada hacer LIKE sobre más de 1000 columnas...sin contar con que haya columnas de tipo BLOB, LONGTEXT, y TEXT.
¿Te imaginas el nivel de degradación que tendría la performance del servidor de BBDD?

Un espanto.

Por otro lado, existiendo ya los índices FULLTEXT y las cláusulas MATCH () ... AGAINST() para búsqueda multicampo sobre ese tipo de índices, usar LIKE es innecesario.

Adicionalmente, el modo en que estás usando los LIKE está mal, porque no estás poniendo el patrón como texto . Le faltan los apostrofos:
Código MySQL:
Ver original
  1. SELECT * FROM alumnos
  2. WHERE nombre LIKE '%a%' OR apaterno LIKE '%a%' OR amaterno LIKE '%a%';

Finalmente, la consulta es ineficiente, ya que al poner los comodines a ambos lados del valor obligas a MySQL a hacer un FULL TABLE SCAN, lo que es el peor tipo de consulta. En serio. No existe peor performance que la de un full table scan.

Tendrás que indicar una a una las columnas sobre als que se deberá usar el LIKE.

Nota bene: Por favor, recuerda que LIKE está solo definido para columnas de texto, es decir VARCHAR, TEXT, CHAR y LONGTEXT. No lo uses con fechas o numeros... Los resultados son erróneos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 13/08/2015 a las 05:47
  #4 (permalink)  
Antiguo 14/08/2015, 07:09
 
Fecha de Ingreso: junio-2013
Mensajes: 68
Antigüedad: 10 años, 10 meses
Puntos: 1
De acuerdo Respuesta: consulta con like

muchas gracias gnzsoloyo por la explicación me sirvió mucho para poder aprender mas gracias por la respuesta.

Etiquetas: mysql, php
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 09:10.