Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Trova valori univoci in una colonna di testo separato da virgole

Ignorando gli ovvi problemi con il design del tuo tavolo come accennato in tutti i commenti e accettando che questo potrebbe rivelarsi molto lento su un tavolo enorme, ecco come potrei farlo.

Per prima cosa... creerei una dichiarazione che trasformerebbe tutte le righe in un grande elenco delimitato da virgole.

DECLARE @tmp VarChar(max)
SET @tmp = ''
SELECT @tmp = @tmp + ColumnA + ',' FROM TableA

Quindi usa la suddivisione udf con valori di tabella descritta in questo articolo SO per trasformare quella stringa enorme in una tabella con una clausola distinta per assicurarti che sia univoca.

https://stackoverflow.com/a/2837662/261997

SELECT DISTINCT * FROM dbo.Split(',', @tmp)