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

Mostrar registros que empiecen por un número

Estas en el tema de Mostrar registros que empiecen por un número en el foro de Mysql en Foros del Web. Buenas, uso la siguiente consulta para mostrar los registros que empiecen por X letra, pero mi duda es, cómo muestro los registros que empiecen por ...
  #1 (permalink)  
Antiguo 11/04/2009, 09:36
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 15 años, 6 meses
Puntos: 9
Mostrar registros que empiecen por un número

Buenas, uso la siguiente consulta para mostrar los registros que empiecen por X letra, pero mi duda es, cómo muestro los registros que empiecen por cualquier número del 0 al 9?

SELECT * FROM mensajes WHERE nombre LIKE '$letra%'

No quisiera hacer diez consultas con 0%, 1%, 2%, etc. sino una consulta para mostrar los que empiecen por cualquier número.


Otra duda que tengo es que quisiera mostrar los que empiecen por ejemplo por A%, pero si un registro se llama "¡Armario!" me lo muestre también, osea que pase de los simbolos.

Mil gracias de antemano!!!!!!!!!!
  #2 (permalink)  
Antiguo 11/04/2009, 10:06
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Mostrar registros que empiecen por un número

En ese caso creo que es mejor que uses expresiones regulares.

Tu primer ejemplo quedaría así:
Código mysql:
Ver original
  1. select *from mensajes where nombre regexp '^[[:digit:]]';

Te muestra todos los registros en que los nombres empiecen por un numero.

Te dejo un documento para que lo mires y hagas tus pruebas deacuerdo a tus necesidades.
http://www.anieto2k.com/2007/08/01/u...res-con-mysql/

Un saludo
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 11/04/2009, 11:43
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 15 años, 6 meses
Puntos: 9
Respuesta: Mostrar registros que empiecen por un número

Buenas, uso [:alpha:] pero los que empiezan por ¡ o ¿... no me los muestra, solo me muestra las de las letras del abecedario, el ejemplo que me pusiste para los numeros me funciona perfecto. He estado leyendo la página que has puesto pero no se como hacer para que no haga caso a los símbolos... alguna idea?

Gracias otra vez!
  #4 (permalink)  
Antiguo 11/04/2009, 18:13
 
Fecha de Ingreso: abril-2009
Mensajes: 11
Antigüedad: 15 años
Puntos: 0
Respuesta: Mostrar registros que empiecen por un número

Hazle un: WHERE nombre LIKE 'a%' || nombre LIKE '¡a%' || nombre LIKE '¿a%'
  #5 (permalink)  
Antiguo 12/04/2009, 03:26
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Mostrar registros que empiecen por un número

Puedes usar lo que te recomienda Rizz, pero si quieres trabajar con expresiones regulares, deberías usar cualquiera de estas sintaxis:
En la primera encontrará signos de puntuación (uno o ninguno) antes de 'a' y en comienzo de campo; en la segunda sólo uno de esos dos (¡ y ¿) o ninguno de ellos antes de 'a' y en comienzo de campo.

SELECT * FROM tabla WHERE campo REGEXP '^[[:punct:]]?a'

SELECT * FROM tabla WHERE campo REGEXP '^[¡|¿]?a'


Piensa que las expresiones regulares son muy útiles, pero no hacen uso de los índices.

Última edición por jurena; 13/04/2009 a las 23:07
  #6 (permalink)  
Antiguo 12/04/2009, 06:35
Avatar de DBMark  
Fecha de Ingreso: mayo-2008
Ubicación: Oxford
Mensajes: 35
Antigüedad: 16 años
Puntos: 6
Respuesta: Mostrar registros que empiecen por un número

Para mostrar estos registros, con uso del indice*:

SELECT * FROM table WHERE campo BETWEEN '0%' and '999999999999999999999999'

Creo que sea mas rapido de usar regexp, con condicion de que las filas no son > 20% de la tabla.
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 19:17.