Anuncios

IT Certification Category (Spanish)468x60

jueves, 19 de enero de 2012

SQL Server - Datos separados por espacio en una nueva columna




Artículo que explica como obtener datos separados por un espacio en una columna diferente.


Existen ocasiones donde tenemos un dato en X columna, dicho dato puede contener dos valores que nos interesa separar en diferentes columnas, para un ejemplo sencillo un primer nombre y segundo nombre o quizás primer nombre y apellido:

NombreAlargado
 Juan Alberto
Pedro Jose 



El resultado que deseamos tener es:

 Nombre1Nombre2
 Juan Alberto
 PedroJose 



Con la siguiente consulta podemos obtener dicho resultado:


Declare @tabla table(nombreAmpliado varchar(100))
insert @tabla values('Jose Alberto')insert @tabla values('Luis Manuel')insert @tabla values('Juan')insert @tabla values('Maria Alejandra')
Select
CASE PATINDEX('% %',nombreAmpliado) WHEN 0 THEN nombreAmpliado
ELSE substring(nombreAmpliado,0,(PATINDEX('% %',nombreAmpliado))) end as Nombre1,
CASE PATINDEX('% %',nombreAmpliado) WHEN 0 THEN ''ELSE substring(nombreAmpliado,(PATINDEX('% %',nombreAmpliado) + 1), len(nombreAmpliado)) end as Nombre2From @tabla




Nota: En este código utilizando PATINDEX que es una función para encontrar el indice donde inicia X cadena definida, en este caso un espacio. En caso de no encontrarse dentro del texto a consultar el resultado es CERO. En las condiciones CASE se indica que si el resultado es CERO, debe traer el valor por defecto (primer nombre), lo que significa que no tiene segundo nombre, en caso contrario trae el primer y segundo nombre respectivamente. En caso de la segunda condición case cuando el resultado sea CERO entonces el campo vendrá vacio.

Resultado obtenido:



 

Publicado por: Willy Taveras

People who read this post also read :