MySQL - Primer letra de cada palabra mysql hasta 6 caracteres

 
Vista:

Primer letra de cada palabra mysql hasta 6 caracteres

Publicado por CRISTIAN JAVIER DE LUCA (2 intervenciones) el 09/09/2020 22:06:44
Buenas tardes, les dejo una consulta realizada por mi, para compartir con el foro. La misma no la he encontrado en ninguna web, y me ha servido de mucho para sacar por ejemplo la primer letra de una tabla de tipos de comprobantes. La tabla consta básicamente de dos campos, el primero es un campo con codificación de hasta 5 dígitos numéricos, la segunda es una descripción del tipo comprobante relacionado con cada código del campo 1 en forma única.
Un ejemplo de esa tabla es como sigue:


tipo descripcion
010 NOTAS DE VENTA AL CONTADO B
024 CPTES A DE COSIGNACION PRIMARIA PARA EL SECTOR PESQUERO MARITIMO


Les dejo una consulta armada que muestra el primer caracter de cada palabra, hasta la sexta.

La idea es si alguien cree que se puede mejorar, compartir tambien la mejora que propone.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT concat(
substring(SUBSTRING_INDEX(descripcion,' ',1), 1,1),
 
substring(SUBSTRING_INDEX((ltrim(mid(descripcion,locate(' ', descripcion)))),' ',1), 1,1),
 
substring(SUBSTRING_INDEX((ltrim(mid(substring(ltrim(mid(descripcion,locate(' ', descripcion))),2),locate(' ', substring(ltrim(mid(descripcion,locate(' ', descripcion))),2))))),' ',1), 1,1),
 
substring(SUBSTRING_INDEX((ltrim(mid(substring(ltrim(mid(substring(ltrim(mid(descripcion,locate(' ', descripcion))),2),locate(' ', substring(ltrim(mid(descripcion,locate(' ', descripcion))),2)))),2),locate(' ', substring(ltrim(mid(substring(ltrim(mid(descripcion,locate(' ', descripcion))),2),locate(' ', substring(ltrim(mid(descripcion,locate(' ', descripcion))),2)))),2))))),' ',1), 1,1),
 
substring(SUBSTRING_INDEX((ltrim(mid(substring(ltrim(mid(substring(ltrim(mid(substring(ltrim(mid(descripcion,locate(' ', descripcion))),2),locate(' ', substring(ltrim(mid(descripcion,locate(' ', descripcion))),2)))),2),locate(' ', substring(ltrim(mid(substring(ltrim(mid(descripcion,locate(' ', descripcion))),2),locate(' ', substring(ltrim(mid(descripcion,locate(' ', descripcion))),2)))),2)))),2),locate(' ', substring(ltrim(mid(substring(ltrim(mid(substring(ltrim(mid(descripcion,locate(' ', descripcion))),2),locate(' ', substring(ltrim(mid(descripcion,locate(' ', descripcion))),2)))),2),locate(' ', substring(ltrim(mid(substring(ltrim(mid(descripcion,locate(' ', descripcion))),2),locate(' ', substring(ltrim(mid(descripcion,locate(' ', descripcion))),2)))),2)))),2))))),' ',1), 1,1),
 
substring(SUBSTRING_INDEX((ltrim(mid(substring(ltrim(mid(substring(ltrim(mid(substring(ltrim(mid(substring(ltrim(mid(descripcion,locate(' ', descripcion))),2),locate(' ', substring(ltrim(mid(descripcion,locate(' ', descripcion))),2)))),2),locate(' ', substring(ltrim(mid(substring(ltrim(mid(descripcion,locate(' ', descripcion))),2),locate(' ', substring(ltrim(mid(descripcion,locate(' ', descripcion))),2)))),2)))),2),locate(' ', substring(ltrim(mid(substring(ltrim(mid(substring(ltrim(mid(descripcion,locate(' ', descripcion))),2),locate(' ', substring(ltrim(mid(descripcion,locate(' ', descripcion))),2)))),2),locate(' ', substring(ltrim(mid(substring(ltrim(mid(descripcion,locate(' ', descripcion))),2),locate(' ', substring(ltrim(mid(descripcion,locate(' ', descripcion))),2)))),2)))),2)))),2),locate(' ', substring(ltrim(mid(substring(ltrim(mid(substring(ltrim(mid(substring(ltrim(mid(descripcion,locate(' ', descripcion))),2),locate(' ', substring(ltrim(mid(descripcion,locate(' ', descripcion))),2)))),2),locate(' ', substring(ltrim(mid(substring(ltrim(mid(descripcion,locate(' ', descripcion))),2),locate(' ', substring(ltrim(mid(descripcion,locate(' ', descripcion))),2)))),2)))),2),locate(' ', substring(ltrim(mid(substring(ltrim(mid(substring(ltrim(mid(descripcion,locate(' ', descripcion))),2),locate(' ', substring(ltrim(mid(descripcion,locate(' ', descripcion))),2)))),2),locate(' ', substring(ltrim(mid(substring(ltrim(mid(descripcion,locate(' ', descripcion))),2),locate(' ', substring(ltrim(mid(descripcion,locate(' ', descripcion))),2)))),2)))),2)))),2))))),' ',1), 1,1)
)
from
tipocomprobantes;


Y un resultado esta consulta es:

para el registro 010:
NDVACB
para el registro 024:
CADCPP


Espero les sriva.
Saludos!.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Primer letra de cada palabra mysql hasta 6 caracteres

Publicado por Randolph Eliecer (1 intervención) el 30/06/2022 19:47:56
Me gustaría saber como hacerlo para 10 o 15 ya que estoy tratando de hacerlo y no he podido, seria de muchas ayuda gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar