This challenge is all about counting the number of occurrence of characters in a string using a SET based query. The task is to list all the characters and count of that character within the given string.
- 資料來源
Data ---- 12 xx
- 產生結果
Data Chars NumberOfOccurance ---- ----- ------------------- 12 1 1 appears (1) times 12 2 2 appears (1) times xx x x appears (2) times
- 規則
- Results must be sorted in ascending order of Data and then by Character.
- The output should be in the same way as it has been shown.
- 個人解法
DECLARE @T TABLE(Data VARCHAR(MAX)) INSERT INTO @T SELECT '12' UNION ALL SELECT 'xx' SELECT * FROM @T ; WITH CTE AS ( SELECT Data , 1 AS Location FROM @T UNION ALL SELECT Data , Location + 1 FROM CTE WHERE Location < LEN(Data) ) SELECT T.Data , T.Chars , T.Chars + ' appears (' + CAST(COUNT(*) AS varchar(10)) + ') times' AS NumberOfOccurance FROM ( SELECT Data, SUBSTRING(Data,Location,1) AS Chars FROM CTE ) AS T GROUP BY T.Data , T.Chars ORDER BY T.Data , T.Chars
- Solutions 內特殊解法
DECLARE @T TABLE(Data VARCHAR(MAX)) INSERT INTO @T SELECT '12' UNION ALL SELECT 'xx'; WITH strCTE(Data,chars) AS ( SELECT DISTINCT Data , SUBSTRING(Data,Number,1) AS chars FROM @T T INNER JOIN master..spt_values sv ON Number <= LEN(T.Data) WHERE number > 0 AND [type] = 'P' ) SELECT Data , chars , chars + ' appears (' + CAST((LEN(Data) - LEN(REPLACE(Data, chars,''))) AS varchar(max)) + ') times' AS NumberOfOccurance FROM strCTE ;
沒有留言:
張貼留言