合并和计算有换行符和没有换行符的字符串
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;
我必须编写一个小脚本来遍历一组字符串并比较它们。该脚本基本上对字符串进行计数,并将 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;