![]() |
ordenar por codigo extraño Hola! Esta es mi primera busqueda de ayuda asi que espero expresar bien lo que quiero hacer. Hace poco que entre a programar en mi empresa y la base de datos ya me la he encontrado asi...yo no hubiera hecho asi esto pero en fin, ahora me toca enfrentarme a este problema...a ver si me podeis ayudar El asunto es que tengo en una tabla de proyectos un campo con el "codigo del proyecto" que es de tipo varchar. El string que contiene tiene el siguiente formato: AA-BB-CCDD Donde AA son dos caracteres que indican el departamento, BB son dos cifras para el año, CC son dos caracteres que indican una provincia y DD son dos cifras que indican el numero del proyecto dentro del año para ese departamento. Os pongo un ejemplo para que se me haga más facil explicar lo que me piden: Si en la tabla tengo estos 3 codigos (por orden de insercion) HI-07-BU02 HI-06-SE05 HI-07-AB04 Y los ordeno con un ORDER BY me los deja asi: 1) HI-06-SE07 2) HI-07-AB04 3) HI-07-BU02 Que estarian ordenados por departamento (HI) y por año (06, 07) LA cuestion es que debo ordenarlos por departamento (HI), por año (06,07) Y por numero del proyecto, es decir, que quede asi: 1) HI-06-SE07 2) HI-07-BU02 3) HI-07-AB04 Llevo varios dias dandole vueltas al asunto y es que esas dichosas letras del medio son las que fastidian todo el asunto, pero es la codificacion de la empresa y poco puedo hacer con eso... En fin si alguien me pudiera ayudar le estaria MUUUUY agradecido De todas formas si habeis llegado hasta aqui leyendo ya te doy las gracias jejeje que vaya rollo os he soltao :Zzz: |
Re: ordenar por codigo extraño Ahora no puedo ver si funciona, luego lo intento pero creo que puedes hacer lo siguiente Código: Select codigo,...Luego te lo confirmo.... Quim |
Re: ordenar por codigo extraño Caray que bueno y que rápido!! Ya lo he probado y efectivamente funciona :aplauso: :aplauso:, muchiiiisimas gracias Quim Puede usarse tanto substr() como substring() y lo que si es que empiezan a contar desde 1. Lo dicho, muchísimas gracias por la ayuda :aplauso: |
Re: ordenar por codigo extraño A título de ampliación y por si sirve para otras cosas, quisiera recordar que también podría hacerse así: ... ORDER BY SUBSTRING_INDEX( codigo, '-', 1 ) , SUBSTRING_INDEX( SUBSTRING_INDEX( codigo, '-', 2 ) , '-', -1 ) , SUBSTRING_INDEX( codigo, '-', -1 ) Esta solución sería interesante si el número de caracteres entre los guiones pudiera variar, es decir, si tanto en el primer miembro como en el tercero pudieran encontrarse más o menos de 2 y 4 caracteres. Lo que hace es separar por un limitador, en tu caso el guión, con el que delimitas las tres partes. La mayor dificultad es hacer que salga el de en medio, para lo que hay que recurrir a dos SUBSTRING_INDEX. |
| La zona horaria es GMT -6. Ahora son las 02:20. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.