我正在尝试一个非常简单的游标来查找具有相似条件的表中的字数。我的光标是:
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帮助!
答案 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, '%')