如何像GOOGLE一样,检索全文,然后只返回__命中词__的前后各100个字的内容?

linmz 2003-11-26 10:25:14
我只想返命中词前后的字符串,能否直接在SELECT语句中实现?
...全文
34 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
linmz 2003-11-26
  • 打赏
  • 举报
回复
邹建兄,多谢! 已经不能用分数来表达了,呵呵....
linmz 2003-11-26
  • 打赏
  • 举报
回复
邹建兄,多谢! 已经不能用分数来表达了,呵呵....
zjcxc 2003-11-26
  • 打赏
  • 举报
回复
--例子:
declare @t table(a varchar(8000))
insert into @t
select '啊;圣诞节法律;按时搭街坊;撒旦解放了;按时解放;决撒了;解放;按时搭街坊;'
union all select 'sa;dkjfpoawuerpo安康搭街坊;拉萨酱豆腐;喀什搭街坊;asdkf;asl jfas;djf;sadj;似的;'
union all select 'asd撒旦机撒旦机;撒旦机撒旦艰苦可是地方艰苦的;毫磅批 sa;dkjfpoawuerpo安康搭街坊;拉萨酱豆腐;喀什搭街坊;asdkf;asl jfas;djf;sadj;似的;'

declare @tj varchar(100)
set @tj='%拉萨%'

select substring(a,case when patindex(@tj,a)<=100 then 1
else patindex(@tj,a)-100 end,patindex(@tj,a)+100+4)
from @t
where a like @tj
zjcxc 2003-11-26
  • 打赏
  • 举报
回复
--上面的还要改一下:

declare @tj varchar(100)
set @tj='%拉萨%' --设置要查询的关键字

select substring(字段名,case when patindex(@tj,字段名)<=100 then 1
else patindex(@tj,字段名)-100 end,patindex(@tj,字段名)+100+4)
from 表
where 字段名 like @tj
zjcxc 2003-11-26
  • 打赏
  • 举报
回复
select substring(字段名,case when patindex('%命中词%',字段名)<=100 then 1 else patindex('%命中词%',字段名)-100 end,patindex('%命中词%',字段名)+100+len('命中词'))
from 表

22,209

社区成员

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

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