光标找到字数

时间:2014-06-14 11:07:19

标签: mysql sql

我正在尝试一个非常简单的游标来查找具有相似条件的表中的字数。我的光标是:

declare @Engword varchar(max)
Declare @wcount int

DECLARE word_cursor CURSOR FOR
select distinct engtitle from Table
where a1 = 'EHD'
ORDER BY Engtitle;

OPEN Word_cursor;

FETCH NEXT FROM Word_cursor
INTO @Engword;

WHILE @@FETCH_STATUS = 0  
BEGIN 
   Select @wcount = COUNT(*) from Table where engtitle like '%@Engword %'

   Insert into WordStatus(Engtitle,Estatus)
   Values(@Engword,@wcount)

   FETCH NEXT FROM Word_cursor
   INTO @Engword;
   end

CLOSE Word_cursor;
DEALLOCATE Word_cursor;
GO

我想插入每个单词及其计数,这些单词来自不同表格WordStatus中的相似条件。此光标在新表中插入单词,但所有单词都具有相同的计数0。 Plz帮助!

2 个答案:

答案 0 :(得分:0)

您的查询没有意义。您正在从光标中的表中获取整个标题。然后,您正在检查表中是否包含空格的标题。令人高兴的是,你的头衔没有错误,所以你没有得到任何匹配。

如果您有单词列表,您可以使用单个查询执行所需操作,而无需游标:

select w.word, count(t.engtitle) as NumWords
from Words w left join
     Table t
     on t.engtitle like concat('%', w.word, '%');

如果您想要带分隔符的单词,请执行以下操作:

select w.word, count(t.engtitle) as NumWords
from Words w left join
     Table t
     on concat(' ', t.engtitle, ' ') like concat('% ', w.word, ' %');

答案 1 :(得分:0)

这是因为引号字符串'%@Engword%'内的变量无效。我认为如果你改变这一行应该可行:

Select @wcount = COUNT(*) from Table where engtitle like concat('%', @Engword, '%')