如何根据数据表做批量查询替换?

Sam-tomcat 2007-03-12 05:35:19
为了实现网站的关键标识功能, 需要在提取的一条数据记录中的文字部分做关键字标识操作.

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. 这样的操作可否用其它方式来替换游标操作, 游标操作返回的速度相对慢了很多.
...全文
362 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sam-tomcat 2007-03-22
  • 打赏
  • 举报
回复
真是没人会? 不会吧! 这么多高手在此.
Sam-tomcat 2007-03-20
  • 打赏
  • 举报
回复
大家快点帮帮我吧.
Sam-tomcat 2007-03-15
  • 打赏
  • 举报
回复
@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

还有就是我在做数据表时出现错误,数据表不可返回,和游标的速度问题.
wangdehao 2007-03-14
  • 打赏
  • 举报
回复
直接

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
Sam-tomcat 2007-03-14
  • 打赏
  • 举报
回复
高手还没出现?

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧