Tôi sẽ thử chạy một chức năng tách (tách từng từ thông qua một khoảng trống) trên mỗi hàng được trả lại để nhận tất cả các từ riêng biệt vào một bảng quen thuộc. Sử dụng mã sau, bạn sẽ có thể chia một hàng theo không gian của nó:
CREATE FUNCTION dbo.Split(@String varchar(8000), @Delimiter char(1))
returns @temptable TABLE (items varchar(8000))
as
begin
declare @idx int
declare @slice varchar(8000)
select @idx = 1
if len(@String)<1 or @String is null return
while @idx!= 0
begin
set @idx = charindex(@Delimiter,@String)
if @idx!=0
set @slice = left(@String,@idx - 1)
else
set @slice = @String
if(len(@slice)>0)
insert into @temptable(Items) values(@slice)
set @String = right(@String,len(@String) - @idx)
if len(@String) = 0 break
end
return
end
Bạn nên gọi hàm này từ bên trong con trỏ hoặc một cái gì đó; bên trong nó, chỉ cần sử dụng một cái gì đó như:
insert into #tmp (word) select * from dbo.split(' ', @row)
Cuối cùng, bạn sẽ chỉ phải sử dụng một truy vấn đơn giản như:
select top 10 count(*) as number, word from separated_words_table order by number
Source here
Nguồn
2010-07-08 16:35:48
Funny bạn nên đề cập đến điều đó ... Xem http://stackoverflow.com/questions/3169051/code-golf-word-frequency-chart/3173246#3173246 – Gabe
Ooh, đó là hoàn hảo. Cảm ơn! Bạn nên thêm điều đó làm câu trả lời .. –