为了实现网站的关键标识功能, 需要在提取的一条数据记录中的文字部分做关键字标识操作.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
end2. 这样的操作可否用其它方式来替换游标操作, 游标操作返回的速度相对慢了很多.

解决方案 »

  1.   

    直接Select title, replace(replace(content,'HTML','<a href="/tag.aspx?q=HTML" target="_blank">HTML</a>'),'标签','<a href="/tag.aspx?q=标签" target="_blank">标签</a>')
     as content From ContentList where id=1
      

  2.   

    @wangdehao(找找找(现在很幸福))
    你可能没有看清楚问题,这个方法我在函数里面已经实现了.只是现在要把这些关键字通过数据表来获取,不是直接写入函数里面.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还有就是我在做数据表时出现错误,数据表不可返回,和游标的速度问题.