Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Trouver des valeurs uniques dans une colonne de texte séparé par des virgules

Ignorant les problèmes évidents avec la conception de votre table comme évoqué dans tous les commentaires et acceptant que cela puisse s'avérer très lent sur une immense table, voici comment je pourrais le faire.

Tout d'abord... je créerais une déclaration qui transformerait toutes les lignes en une seule grande liste délimitée par des virgules.

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

Ensuite, utilisez la division udf de table décrite par cet article SO pour transformer cette chaîne massive en une table avec une clause distincte pour vous assurer qu'elle est unique.

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

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