J'essaierais d'exécuter une fonction de division (en séparant chaque mot dans un espace) sur chaque ligne retournée afin d'obtenir tous les mots séparés dans une table auxiliaire. En utilisant le code suivant, vous devriez être en mesure de diviser une ligne par ses espaces:
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
Vous devez appeler cette fonction à partir d'un curseur ou quelque chose; à l'intérieur, il suffit d'utiliser quelque chose comme:
insert into #tmp (word) select * from dbo.split(' ', @row)
Enfin, vous ne devez utiliser une requête simple comme:
select top 10 count(*) as number, word from separated_words_table order by number
Source here
drôle que vous mentionner que ... Voir http://stackoverflow.com/questions/3169051/code-golf-word-frequency-chart/3173246#3173246 – Gabe
Ooh, c'est parfait. Merci! Vous devriez ajouter cela comme une réponse .. –