SQL Server - Datos separados por espacio en una nueva columna
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:
Nombre1 | Nombre2 |
---|---|
Juan | Alberto |
Pedro | Jose |
Con la siguiente consulta podemos obtener dicho resultado:
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
Publicar un comentario