Pregunta:
¿Obtener 1ª letra de un campo MYSQL?
Wath!?
2008-08-15 08:46:25 UTC
Muy buenas compañeros,

Utilizo el siguiente script para obtener el resultado de una base de datos y mostrar únicamente aquellos cuyo "Alias" comience por la letra indicada en la variable de la URL:
SELECT * from chavales WHERE alias LIKE '$letra%'"
siendo $letra la variable colocada en la url...

Bien, mi duda es la siguiente:
Que debería poner en la variable de la URL o qué devería hacer para que me apareciesen aquellos que en lugar de empezar su alias por una letra sea un número.

Que aparezcan TODOS esos, porque si pongo en la variable un numero exacto (2 por ejemplo, solo me aparecen los que empiezan por el numero 2, en lugar de aparecer todos los que empiezan por un numero indistintamente, sea cual sea)


Muchisimas gracias
Tres respuestas:
Nacho
2008-08-17 15:31:23 UTC
La forma fácil de entender pero lenta sería:



SELECT * from chavales WHERE alias LIKE '1%' or alias LIKE '2%' or alias LIKE '3%' ...



(así hasta incluir el 9 y el 0).



La forma eficiente es extraer la primera letra con LEFT: LEFT(alias, 1)



y puedes comprobar si una letra es parte de una cadena con LOCATE: LOCATE(subcadena, cadena), que será 0 si no existe.



Juntando esas dos cosas, podrías ver cuales tienen un Alias que empieza por número, usando sólo SQL, sin necesidad de PHP, así:



SELECT * from chavales WHERE LOCATE( LEFT(alias,1), "0123456789") > 0
omar_2910
2008-08-15 21:47:56 UTC
debes de hacer un programa que cuando detectes que es número realizes el select con el where alias in ('1%'", '2%'" ... '9%'")

si estas programando con php

hay una fuinción is_numeric
edu2
2008-08-15 19:10:50 UTC
existen sitios especializados en ese tema:

http://www.google.com/search?hl=es&client=opera&rls=en&hs=fRP&q=foro+MYSQL&btnG=Buscar&lr=


Este contenido se publicó originalmente en Y! Answers, un sitio web de preguntas y respuestas que se cerró en 2021.
Loading...