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

consultas LIKE

Estas en el tema de consultas LIKE en el foro de Bases de Datos General en Foros del Web. Hola, Alguien me podria hacer el favor y explicarme lo siguiente: Estoy diseñando una pagina para descargar rooms de GBA o SNES y en la ...
  #1 (permalink)  
Antiguo 06/11/2004, 03:02
Avatar de jhonwilliams  
Fecha de Ingreso: marzo-2004
Ubicación: Copacabana - Colombia
Mensajes: 1.484
Antigüedad: 20 años, 8 meses
Puntos: 76
consultas LIKE

Hola,

Alguien me podria hacer el favor y explicarme lo siguiente:

Estoy diseñando una pagina para descargar rooms de GBA o SNES y en la seccion donde se ve la lista de juegos disponibles tengo todo el abecedario como link asi A B C D ....etc.

Mi duda suge el usar la clausula LIKE para mostar el listado que comienze segun la letra elejida.

Inicialmente tenia esta instrucion:
SELECT * FROM TABLA where nroom LIKE'%$letter%'

pero si el juego es Super Mario World, lo muestra en la letras A,D,E,I,L,M,N,O,P,R,S,U,W.

Luego use esta
SELECT * FROM TABLA where nroom LIKE'%$letter'

y se veia en las letras D

Y por ultimo use esta:
SELECT * FROM TABLA where nroom LIKE'$letter%'

y solo se veia al presionar en la letra "S", eso es lo que yo queria hacer pero no entiendo por que tuve que colocar el "%" al final, ¿que diferencia hay en cada una de ellas?

Gracias
  #2 (permalink)  
Antiguo 06/11/2004, 04:46
Avatar de jarabas
Usuario no validado
 
Fecha de Ingreso: abril-2004
Mensajes: 111
Antigüedad: 20 años, 7 meses
Puntos: 0
Hola
1.-SELECT * FROM TABLA where nroom LIKE'%$letter%'
en esta sentencia lo que hace es devolver todos los registros que:
empiecen por la letra indicada
contengan la letra indicada o
acabe por la letra indicada
2.-SELECT * FROM TABLA where nroom LIKE'%$letter'
en esta otra sentencia lo que hace es devolver todos los registros que:
empiecen por la letra indicada
contengan la letra indicada
3.-SELECT * FROM TABLA where nroom LIKE'$letter%'
y en esta otra sentencia lo que devolveria sería lo que tu quieres, te devuelve los registros que empiecen por la letra indicada.

El % es un comodin de cadena por tanto si lo pones al principio y al final (primera sentencia que nos comentas) significa que puede tener o NO letras por delante de la que querias que te devolviera y por detras, si la pones solo al principio(segunda sentencia) significa que puede tener o NO letras delante de la que querias devolver.
Por eso la correcta para lo que tu quieres es la ultima(la tercera sentencia), como bien dices por que le dices que te devuelva los registros que empiecen por esa letra y el % digamos que sirve para que te saque todas las que empiecen por esa letra, pero tienen mas caracteres despues, ya que si pones SELECT * FROM TABLA WHERE nroom LIKE'$letter' te sacaria solo si tuvieras un registro que fuera $letter, osea, si por ejemplo $letter=e te devolveria los registros que SOLO fueran una "e", si tuvieras un registro que fuera evolution no te lo devolvería.

Espero haberte ayudado aunque igual me he enrollado un poco, pero creo te sirva de respuesta

Un saludo
  #3 (permalink)  
Antiguo 06/11/2004, 20:27
Avatar de jhonwilliams  
Fecha de Ingreso: marzo-2004
Ubicación: Copacabana - Colombia
Mensajes: 1.484
Antigüedad: 20 años, 8 meses
Puntos: 76
gracias

muchas gracias
  #4 (permalink)  
Antiguo 06/11/2004, 21:17
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 9 meses
Puntos: 45
Hola jhonwilliams
aqui encuentras una informacion mas detallada sobre LIKE
http://www.mysql-hispano.org/page.php?id=14&pag=4

Saludos!
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 23:13.