Está en la página 1de 2

Se tiene la cadena siguiente de persona: 3|Juan Perez|30@Av Dias 34|lima|Peru# Av Dias

45|Cusco|Peru# Av cusco 45|Arequipa|Peru Donde: 3|Juan Perez|30 es la cabecera y los demas son
detalle realice un script en sql server para insertar estos datos

Solucion

Para insertar estos datos en una base de datos SQL Server, primero necesitamos dividir la cadena en
la cabecera y los detalles, para luego insertarlos en las tablas correspondientes. Dado que hay una
tabla de personas y una tabla de direcciones, y asumiendo que ya tienes estas tablas creadas, aquí
tienes un script de SQL Server que puedes usar para insertar los datos:

-- Definición de variables para la cadena de entrada

DECLARE @cadena VARCHAR(MAX) = '3|Juan Perez|30@Av Dias 34|lima|Peru#Av Dias 45|Cusco|Peru#Av


cusco 45|Arequipa|Peru'

-- Definir variables temporales para la cabecera y los detalles

DECLARE @cabecera VARCHAR(MAX), @detalles VARCHAR(MAX)

-- Dividir la cadena en la cabecera y los detalles

SELECT @cabecera = SUBSTRING(@cadena, 1, CHARINDEX('@', @cadena) - 1),

@detalles = SUBSTRING(@cadena, CHARINDEX('@', @cadena) + 1, LEN(@cadena) - CHARINDEX('@',


@cadena))

-- Insertar la cabecera en la tabla de personas

DECLARE @personaId INT

INSERT INTO Personas (Nombre, Edad)

SELECT PARSENAME(REPLACE(@cabecera, '|', '.'), 3),

PARSENAME(REPLACE(@cabecera, '|', '.'), 2)

-- Obtener el ID de la persona recién insertada

SET @personaId = SCOPE_IDENTITY()

-- Dividir los detalles y insertarlos en la tabla de direcciones

DECLARE @detalleParts TABLE (direccion VARCHAR(MAX))

INSERT INTO @detalleParts (direccion)

SELECT value

FROM STRING_SPLIT(@detalles, '#')

INSERT INTO Direcciones (Calle, Ciudad, Pais, PersonaId)


SELECT PARSENAME(REPLACE(direccion, '|', '.'), 3),

PARSENAME(REPLACE(direccion, '|', '.'), 2),

PARSENAME(REPLACE(direccion, '|', '.'), 1),

@personaId

FROM @detalleParts

También podría gustarte