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

Más específico que LIKE

Estas en el tema de Más específico que LIKE en el foro de Mysql en Foros del Web. Quiero hacer una consulta en Mysql, pero el LIKE encuentra cosas parecidas. Necesito que encuentre solamente una cadena idéntica. ¿Cual es el comando?...
  #1 (permalink)  
Antiguo 16/04/2013, 13:11
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Más específico que LIKE

Quiero hacer una consulta en Mysql, pero el LIKE encuentra cosas parecidas. Necesito que encuentre solamente una cadena idéntica.

¿Cual es el comando?
  #2 (permalink)  
Antiguo 16/04/2013, 13:14
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Más específico que LIKE

A caray, me extraña que preguntes eso aquí Rafael siendo que en el foro de base de datos te podrían ayudar mejor.

O a lo mejor nos estás queriendo jugar una broma.

LIKE también puede ser muy especifico, sobre todo si omites los carácteres comodín %:
Cita:
WHERE columna LIKE 'foo'
Pero sería idéntico a esto:
Cita:
WHERE columna = 'foo'
Así que bien podrías dar ejemplos para que lluevan más opciones.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 16/04/2013, 13:49
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Respuesta: Más específico que LIKE

Ustedes son los que me sacan de onda, ya que alguna pregunta hace tiempo, como la consulta estaba dentro del script php me dijeron que a la vuelta (en php).

Aparte... los de Php son mis consentidos para preguntar (y JavaScript para que no me vean feo)

Yo tenía entendido que
WHERE columna LIKE 'foo'
daba resultados como
foo1, foo2, foolanito...

En alguna prueba que hice eso daba de resultado.
  #4 (permalink)  
Antiguo 16/04/2013, 14:04
Avatar de rottenp4nx  
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 11 años, 6 meses
Puntos: 36
Respuesta: Más específico que LIKE

Depende si lo usas con los comodines

palabra% que comience con esa palabra

%palabra que termine con esa palabra

%palabra% que contenga esa palabra

saludos
  #5 (permalink)  
Antiguo 16/04/2013, 21:02
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: Más específico que LIKE

Es como te dicen, Rafael: Si usas el LIKE sin comodines, es semánticamente idéntico a usar "=".
Código MySQL:
Ver original
  1. mysql> SELECT 'abcde' LIKE 'abcd';
  2. +---------------------+
  3. | 'abcde' LIKE 'abcd' |
  4. +---------------------+
  5. |                   0 |
  6. +---------------------+
  7. 1 row in set (0.00 sec)
  8.  
  9. mysql> SELECT 'abcde' LIKE 'abcde';
  10. +----------------------+
  11. | 'abcde' LIKE 'abcde' |
  12. +----------------------+
  13. |                    1 |
  14. +----------------------+
  15. 1 row in set (0.00 sec)

Código MySQL:
Ver original
  1. mysql> SELECT 'abcde' = 'abcd';
  2. +------------------+
  3. | 'abcde' = 'abcd' |
  4. +------------------+
  5. |                0 |
  6. +------------------+
  7. 1 row in set (0.00 sec)
  8.  
  9. mysql> SELECT 'abcde' = 'abcde';
  10. +-------------------+
  11. | 'abcde' = 'abcde' |
  12. +-------------------+
  13. |                 1 |
  14. +-------------------+
  15. 1 row in set (0.00 sec)

Para mi (y que me perdonen los programadores), el uso de LIKE es un vicio de desarrolladores que no quieren escribir consultas mejores (fiaca, bah!). Es consultar datos al tun-tun.

De hecho, entre los lineamientos de buenas prácticas de la consultora para la que trabajo, explícitamente dice en los manuales que no debe usarse el LIKE en ningún desarrollo, y que de ser necesario sólo pueden hacerse con el comodín al inicio o al final ('%palabra' o 'palabra%'), pero nunca se usan al mismo tiempo.
La razón de esto es por un lado performántica: poner ambos obliga al motor de base de datos a realizar un full table scan, una de las peores formas de consulta.
Por otro lado, tiene un sentido práctico: Si analizas el comportamiento de los usuarios, descubrirás que la mayor parte de las veces la persona busca el inicio de las frases o palabras, o el final de las mismas, pero muy rara vez busca frases intermedias. Y para estas últimas es siempre más eficiente el uso de indices FULLTEXT, MATCH() AGAINST o expresiones regulares.
__________________
¿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; 16/04/2013 a las 21:10
  #6 (permalink)  
Antiguo 16/04/2013, 21:56
 
Fecha de Ingreso: julio-2008
Mensajes: 13
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Más específico que LIKE

Busca info sobre match angain(Funciones de búsqueda de texto completo (Full-Text))

Etiquetas: 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 17:28.