sql >> Database >  >> RDS >> Sqlserver

Vind unieke waarden in een kolom met door komma's gescheiden tekst

De voor de hand liggende problemen met je tafelontwerp negeren, zoals vermeld in alle opmerkingen en accepteren dat dit erg traag kan zijn op een enorme tafel, hier is hoe ik het zou kunnen doen.

Eerst... zou ik een statement maken dat alle rijen zou veranderen in één grote, door komma's gescheiden lijst.

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

Gebruik vervolgens de tabelwaarde udf-splitsing beschreven in dit SO-artikel om die enorme reeks terug te zetten in een tabel met een aparte clausule om ervoor te zorgen dat deze uniek is.

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

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


  1. Gebruik mysqldump om een ​​back-up te maken van MySQL of MariaDB

  2. De pt-pg-summary Percona Toolkit voor PostgreSQL gebruiken

  3. Tabel BIJWERKEN met SUM() en COUNT() in dezelfde tabel naar verschillende kolommen

  4. opeenvolgende tijdsintervallen groeperen in sql