sql >> Databasteknik >  >> RDS >> Sqlserver

Hitta unika värden i en kolumn med kommaseparerad text

Att ignorera de uppenbara problemen med din bordsdesign som antyds i alla kommentarer och acceptera att detta kan visa sig vara väldigt långsamt på ett stort bord så här kan jag göra det.

Först... skulle jag skapa ett uttalande som skulle förvandla alla rader till en stor, massiv kommaavgränsad lista.

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

Använd sedan den tabellvärderade udf-delningen som beskrivs i denna SO-artikel för att förvandla den massiva strängen tillbaka till en tabell med en distinkt klausul för att säkerställa att den är unik.

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

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


  1. OGG-01224 Adressen används redan

  2. hitta liknande böcker baserade på köpta böcker baserade på bokmeta-sökord

  3. Skapa en tillfällig tabell i SQLite

  4. mycket stor mysql-tabell och rapportering