如何根据数据表做批量查询替换?
为了实现网站的关键标识功能, 需要在提取的一条数据记录中的文字部分做关键字标识操作.
Select title, content From ContentList where id=1
要在数据的内容处做处理
Select title, KeyPrecess(content) as content From ContentList where id=1
需要在content处做关键字处理.
数据库函数
CREATE function KeyReplace(@str varchar(8000))
returns varchar(8000)
as
begin
Set @str = replace(@str,'HTML','<a href="/tag.aspx?q=HTML" target="_blank">HTML</a>')
Set @str = replace(@str,'标签','<a href="/tag.aspx?q=标签" target="_blank">标签</a>')
return @str
end
现在问题是
1. 转为数据表blog_CustomKey操作, 从数据表里面提取上面的 "HTML 标签" 等关键做相关的批量替换, 这样就会涉及到游标和表的查询操作, 但在数据库函数中是返回字符型的数据, 操作表的查询时就会出现444的错误. 显示无法返回表数据. 如下代码所示.
CREATE function KeyReplace(@str varchar(8000))
returns varchar(8000)
as
begin
Set @str = replace(@str,'HTML','<a href="/tag.aspx?q=HTML" target="_blank">HTML</a>')
Set @str = replace(@str,'标签','<a href="/tag.aspx?q=标签" target="_blank">标签</a>')
return @str
--Declare @S varchar(50)
--DECLARE Employee_Cursor CURSOR FOR
--select KeyStr from blog_CustomKey
--OPEN Employee_Cursor
--FETCH NEXT FROM Employee_Cursor
--WHILE @@FETCH_STATUS = 0
--BEGIN
-- Set @S = (select top 1 KeyStr from blog_CustomKey)
-- if(len(@S)>0)
-- Begin
-- Set @str = replace(@str,@S,'<a href="/tag.aspx?q='+@S+'" target="_blank">'+@S+'</a>')
-- End
-- FETCH NEXT FROM Employee_Cursor
--END
--CLOSE Employee_Cursor
--DEALLOCATE Employee_Cursor
--return @str
end
2. 这样的操作可否用其它方式来替换游标操作, 游标操作返回的速度相对慢了很多.