合并和计算有换行符和没有换行符的字符串

Consolidate and Count Strings with New Line Breaks and Without

我必须编写一个小脚本来遍历一组字符串并比较它们。该脚本基本上对字符串进行计数,并将 return 任何重复的行(或计数 > 1)

select data_string, count(data_string)
from #facts
group by data_string
having count(data_string) > 1

这适用于大多数情况,我们意识到有些用户输入的字符串带有换行符,而其他用户则没有。以下是完全相同的两个字符串,应合并为一个计数。

但是第一个后面有一个新的换行符,因此它没有将它们合并为一个计数。

ZPT3Z02-C4-988

ZPT3Z02-C4-988  

有办法remove/limit这些吗?

我试过这样做

select RTRIM(LTRIM(data_string)), count (RTRIM(LTRIM(data_string)))
from #facts
group by data_string
having count (RTRIM(LTRIM(data_string))) > 1

还有这个

select RTRIM(LTRIM(REPLACE(data_string, CHAR(13), ''))), count (RTRIM(LTRIM(REPLACE(data_string, CHAR(13), ''))))
from #facts
group by data_string
--having count (RTRIM(LTRIM(data_string))) > 1

它不工作。 请帮助

我认为第二个版本应该可以。 . .右边 GROUP BY:

select RTRIM(LTRIM(REPLACE(data_string, CHAR(13), ''))),
       count(*)
from #facts
group by RTRIM(LTRIM(REPLACE(data_string, CHAR(13), '')))
having count(*) > 1;

不过,SQL服务器支持多行字符串,所以你也可以这样做:

select RTRIM(LTRIM(REPLACE(data_string, '
', ''))),
       count(*)
from #facts
group by RTRIM(LTRIM(REPLACE(data_string, '
', '')))
having count(*) > 1;