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

Comentarios

Entradas populares de este blog

The Deep Sea: una web interactiva para explorar las profundidades el mar y descubrir las extrañas criaturas que viven en él

Detectar el usuario de Windows utilizando C#

Lo nuevo de SQL Server 2008 respecto a SQL Server 2005