es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Dividir una celda en múltiples filas en SQL Server

Dividir el valor de una única celda en varias filas duplicando la columna “id” y utilizando solo una porción del texto original. Cualquier método que no sea el uso de UNION.

Aquí está el ejemplo de los datos:

create table Spl 
(
     id INT, 
     Name VARCHAR(100)
)

insert into Spl values (1, '4334ASTBSTCST')
insert into Spl values (2, '7887ASTBSTCST')
insert into Spl values (3, '8793ASTBSTCST')

Imagen de ejemplo

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Una forma de dividir el valor de una celda única en varias filas duplicando la columna de id y utilizando solo partes del texto original sin usar UNION es utilizar una combinación de CROSS APPLY y la función STRING_SPLIT (si se utiliza SQL Server 2016 o posterior):

    SELECT
        Spl.id,
        SUBSTRING(ss.[value], 1, 4) AS SubstringVal
    FROM
        Spl
    CROSS APPLY
        STRING_SPLIT(Spl.Name, 'C') AS ss
    WHERE 
        ss.[value] <> ''
    

    Esta consulta dividirá la columna Name por el delimitador ‘C’ y devolverá cada valor de subcadena por separado como una fila independiente con el valor de id correspondiente duplicado para cada fila. En este caso, estamos utilizando la función SUBSTRING para extraer los primeros 4 caracteres del valor de subcadena, pero esto se puede ajustar a cualquier número de caracteres dependiendo de las necesidades específicas.

    Tener en cuenta que la condición WHERE se agrega para eliminar cualquier valor de cadena vacía devuelto por la función STRING_SPLIT.

Comments are closed.