none
Comparar una lista dentro de un campo RRS feed

  • Pregunta

  • Hola a todos,

        tengo un campo de una tabla que contiene una lista de números, separados por coma. La lista puede estar desordenada, de modo tal que en un caso puede ser 2,3,5 y en otro, 5,2,3. Tengo que identicar que, en este caso, los valores contenidos en el campo son iguales.

        Cuál es la mejor forma de solucionarlo?

        Aquí les dejo un ejemplo:

    DROP TABLE IF EXISTS #CSV
    CREATE TABLE #CSV
    (ID INT NOT NULL,
     LIST VARCHAR(30) NOT NULL
     )

     INSERT INTO #CSV
     (
       ID,
       LIST
     )
     VALUES
     ( 1,
        '2,3,5' -- LIST - varchar(30)
       ),
       (2,
       '3,5,2')

    SELECT * FROM #CSV

        Muchas gracias.


    Mauricio - Copenhague - Dinamarca

    jueves, 7 de junio de 2018 9:28

Respuestas

  • Si tienes un SQl Server reciente (2016) puedes usar la funcion STRING_SPLIT para convertir el campo separado por comas en una tabla que tiene una unica columna con los valores.

    https://docs.microsoft.com/en-us/sql/t-sql/functions/string-split-transact-sql?view=sql-server-2017

    Una vez hecho eso con las dos columnas, puedes validar que las dos tablas contengan los mismos registros (por ejemplo, con un full outer join y validando que no tenga NULLs).

    Con una version mas antigua, no tienes el STRING_SPLIT, pero se puede escribir una funcion definida por el usuario que haga algo parecido. Si buscas por la Red encontraras algunos ejemplos ya escritos.

    • Propuesto como respuesta HunchbackMVP jueves, 7 de junio de 2018 11:55
    • Marcado como respuesta TDCSoftware jueves, 7 de junio de 2018 11:59
    jueves, 7 de junio de 2018 11:16