If the order doesn't matter, you can do it pretty easily:
DECLARE @string VARCHAR(100) = 'BLACKHEATH 0AA BLACKHEATH COLCHESTER CO2 0AA';
SELECT @string AS Source
, LTRIM((
SELECT DISTINCT ' ' + column1 AS [text()]
FROM dbo.SplitString(@string, ' ')
FOR XML PATH('')
)) AS UniqueWords;
What is the idea here?
dbo.SplitString
(space
). . , SplitString, .DISTINCT
FOR XML PATH('')
.
:
βββββββββββββββββββββββββββββββββββββββββββββββββ¦ββββββββββββββββββββββββββββββββ
β Source β UniqueWords β
β ββββββββββββββββββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββ£
β BLACKHEATH 0AA BLACKHEATH COLCHESTER CO2 0AA β 0AA BLACKHEATH CO2 COLCHESTER β
βββββββββββββββββββββββββββββββββββββββββββββββββ©ββββββββββββββββββββββββββββββββ
, , (, ROW_NUMBER()) ( ), , . , :
βββββββββββββ¦ββββββββββββ¦βββββββββββββ
β WordOrder β TermOrder β Term β
β ββββββββββββ¬ββββββββββββ¬βββββββββββββ£
β 1 β 1 β BLACKHEATH β
β 2 β 1 β 0AA β
β 3 β 2 β BLACKHEATH β
β 4 β 1 β COLCHESTER β
β 5 β 1 β CO2 β
β 6 β 2 β 0AA β
βββββββββββββ©ββββββββββββ©βββββββββββββ
(@Splitted
- ):
SELECT @string AS Source
, LTRIM((
SELECT ' ' + Term AS [text()]
FROM @Splitted
WHERE TermOrder = 1
ORDER BY WordOrder
FOR XML PATH('')
)) AS UniqueWords;
:
βββββββββββββββββββββββββββββββββββββββββββββββββ¦ββββββββββββββββββββββββββββββββ
β Source β UniqueWords β
β ββββββββββββββββββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββ£
β BLACKHEATH 0AA BLACKHEATH COLCHESTER CO2 0AA β BLACKHEATH 0AA COLCHESTER CO2 β
βββββββββββββββββββββββββββββββββββββββββββββββββ©ββββββββββββββββββββββββββββββββ
PS SQL? SQL Server , , .