Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Encontre valores exclusivos em uma coluna de texto separado por vírgulas


Ignorando os problemas óbvios com o design da sua tabela, como mencionado em todos os comentários, e aceitando que isso pode ser muito lento em uma mesa enorme, aqui está como posso fazer isso.

Primeiro... eu criaria uma declaração que transformaria todas as linhas em uma grande lista delimitada por vírgulas.
DECLARE @tmp VarChar(max)
SET @tmp = ''
SELECT @tmp = @tmp + ColumnA + ',' FROM TableA

Em seguida, use a divisão udf com valor de tabela descrita por este artigo SO para transformar essa string enorme de volta em uma tabela com uma cláusula distinta para garantir que ela seja exclusiva.

https://stackoverflow.com/a/2837662/261997
SELECT DISTINCT * FROM dbo.Split(',', @tmp)