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

Extraer la informacion de un campo si no comienza con una letra

Estas en el tema de Extraer la informacion de un campo si no comienza con una letra en el foro de Mysql en Foros del Web. Me estoy volviendo loco con esto... Estoy armando un filtro que va de la A a la Z y ahora le quiero agregar uno mas ...
  #1 (permalink)  
Antiguo 10/11/2009, 15:10
Avatar de Zuker  
Fecha de Ingreso: marzo-2007
Ubicación: Argentina
Mensajes: 164
Antigüedad: 17 años, 1 mes
Puntos: 1
Extraer la informacion de un campo si no comienza con una letra

Me estoy volviendo loco con esto...

Estoy armando un filtro que va de la A a la Z y ahora le quiero agregar uno mas (llamemoslo #)

Lo que hace este filtro es buscar si comienzan con una letra. (Lo hago utilizando Like A% por ej)

El tema es que necesito que de alguna manera me arroje todo lo que no comience con una letra de la A a la Z... o sea todo lo que comience con numeros y simbolos

Es posible?

Gracias!
Saludos
  #2 (permalink)  
Antiguo 10/11/2009, 15:26
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: Extraer la informacion de un campo si no comienza con una letra

Es una consulta que tendrá mucho funcionamiento y carga de datos?

Esto te puedo servir:
Código mysql:
Ver original
  1. mysql> select *from tabla;
  2. +---------+
  3. | campo   |
  4. +---------+
  5. | daniel  |
  6. | daniela |
  7. | diego   |
  8. | 2diego  |
  9. | $diego  |
  10. +---------+
  11. 5 rows in set (0.00 sec)
  12.  
  13. mysql> select *from tabla where
  14. >campo not in(select campo from tabla where
  15. >(ascii(left(campo,1)) between 65 and 90) or (ascii(left(campo,1)) between 97 and 122));
  16. +--------+
  17. | campo  |
  18. +--------+
  19. | 2diego |
  20. | $diego |
  21. +--------+
  22. 2 rows in set (0.02 sec)
  23.  
  24. mysql>

No se que tan eficiente sea para altas cargas de datos.

aca la consulta limpia
Código sql:
Ver original
  1. SELECT *FROM tabla WHERE
  2. campo NOT IN(SELECT campo FROM tabla WHERE
  3. (ASCII(LEFT(campo,1)) BETWEEN 65 AND 90) OR (ASCII(LEFT(campo,1)) BETWEEN 97 AND 122));


saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 10/11/2009, 17:00
Avatar de Zuker  
Fecha de Ingreso: marzo-2007
Ubicación: Argentina
Mensajes: 164
Antigüedad: 17 años, 1 mes
Puntos: 1
Respuesta: Extraer la informacion de un campo si no comienza con una letra

Funciona! Despues vere de ir optimizando el codigo. Gracias!
  #4 (permalink)  
Antiguo 11/11/2009, 04:05
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Extraer la informacion de un campo si no comienza con una letra

También con una expresión regular
SELECT * FROM tabla WHERE campo NOT REGEXP '^[[:alpha:]]';

Esto te encontrará todo lo que no empieza por un carácter alfabético.
  #5 (permalink)  
Antiguo 11/11/2009, 05:01
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: Extraer la informacion de un campo si no comienza con una letra

Las expresiones regulares y yo no somos amigos. he intentado estudaiarlas un par de veces y no he entendido ni mu

Ahí tienes zuker...
jurena te acaba de dar una respuesta mucho mas optima y sencilla.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #6 (permalink)  
Antiguo 11/11/2009, 18:14
Avatar de Zuker  
Fecha de Ingreso: marzo-2007
Ubicación: Argentina
Mensajes: 164
Antigüedad: 17 años, 1 mes
Puntos: 1
Respuesta: Extraer la informacion de un campo si no comienza con una letra

Genial, gracias de nuevo a los 2!
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 13:57.