SQL: how to get all the distinct characters in a column, across all rows

后端 未结 5 475
旧巷少年郎
旧巷少年郎 2020-12-30 03:39

Is there an elegant way in SQL Server to find all the distinct characters in a single varchar(50) column, across all rows?

Bonus points if it can be done without cur

5条回答
  •  盖世英雄少女心
    2020-12-30 04:21

    Building on mdma's answer, this version gives you a single string, but decodes some of the changes that FOR XML will make, like & -> &.

    WITH ProductChars(aChar, remain) AS (
       SELECT LEFT(productName,1), RIGHT(productName, LEN(productName)-1) 
          FROM Products WHERE LEN(productName)>0
       UNION ALL
       SELECT LEFT(remain,1), RIGHT(remain, LEN(remain)-1) FROM ProductChars
          WHERE LEN(remain)>0
    )
    SELECT STUFF((
      SELECT N'' + aChar AS [text()]
      FROM (SELECT DISTINCT aChar FROM Chars) base
      ORDER BY aChar
    FOR XML PATH, TYPE).value(N'.[1]', N'nvarchar(max)'),1, 1, N'')
    -- Allow for a lot of recursion. Set to 0 for infinite recursion
    OPTION (MAXRECURSION 365)
    

提交回复
热议问题