ntext搜索关键字

原创 2004年07月16日 09:22:00

/*--ntext搜索

 按 tb 表中的 keyword 在 ta 中查找 content
 列出每个 keyword 在 content 中的具体位置
--邹建 2004.07(引用请保留此信息)--*/

--测试数据
create table ta(id int identity(1,1),content ntext)
insert ta select '我是中国人我是中国人'
union all select '中国人民爱中国 中国人民爱中国 中国人民爱中国 中国人民爱中国'

create table tb(keyword nvarchar(100))
insert tb select '中'
union all select '中国'
go

/*=================处理========================*/
if exists (select * from dbo.sysobjects where id = object_id(N'[序数表]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [序数表]
GO

--为了效率,所以要一个辅助表配合
select top 4000 id=identity(int,1,1) into 序数表
from syscolumns a,syscolumns b
alter table 序数表 add constraint pk_id_序数表 primary key(id)
go

--创建处理的存储过程
create proc p_search
as
create table #t(id int,keyword nvarchar(100),position int)

declare @s Nvarchar(4000),@keyword nvarchar(100)
declare @id int,@i int,@ilen int

declare tb cursor local for
select a.id,b.keyword,position=charindex(b.keyword,a.content)-1,ilen=4000-len(b.keyword)
from ta a,tb b
where charindex(b.keyword,a.content)>0

open tb
fetch tb into @id,@keyword,@i,@ilen
while @@fetch_status=0
begin
 select @s=substring(content,@i+1,4000)
 from ta where id=@id
 while @s<>''
 begin
  insert #t(id,keyword,position)
  select @id,@keyword,id+@i
  from 序数表
  where charindex(@keyword,@s,id)=id

  select @i=@i+@ilen,@s=substring(content,@i+1,4000)
  from ta where id=@id
 end
 
 fetch tb into @id,@keyword,@i,@ilen
end
close tb
deallocate tb
select * from #t
go

--调用示例
exec p_search
go

--删除测试
drop table 序数表,ta,tb
drop proc p_search

/*--测试结果

id          keyword   position 
----------- --------- ----------
1           中        3
1           中        8
1           中国      3
1           中国      8
2           中        1
2           中        6
2           中        9
2           中        14
2           中        17
2           中        22
2           中        25
2           中        30
2           中国      1
2           中国      6
2           中国      9
2           中国      14
2           中国      17
2           中国      22
2           中国      25
2           中国      30

(所影响的行数为 20 行)
--*/

ntext搜索关键字

 选择自 zjcxc 的 Blog  /*--ntext搜索 按 tb 表中的 keyword 在 ta 中查找 content 列出每个 keyword 在 content 中的具体位置--邹建 ...
  • Baijinwen
  • Baijinwen
  • 2008年01月02日 13:35
  • 598

ntext搜索关键字

/*--ntext搜索 按 tb 表中的 keyword 在 ta 中查找 content 列出每个 keyword 在 content 中的具体位置--邹建 2004.07(引用请保留此信息)--*...
  • chenzhiya
  • chenzhiya
  • 2008年01月03日 15:27
  • 99

sql 查询条件字段为text或ntext 的解决方案

sql 查询条件字段为text或ntext得解决方案以及varchar(max)、nvarchar(max)1、在MS SQL2005及以上的版本中,加入大值数据类型(varchar(max)、nva...
  • maolixian
  • maolixian
  • 2010年03月12日 10:36
  • 6845

mysql按照关键字搜索某一些字段

在写某一个功能的时候,比如说要按照关键字搜索多个用户,用户表为 user , 用户信息的字段有name,idcard,sex等等之类的, 假如所输入的关键字是 word , 那么就有两种方法来实现这...
  • wuxianzhenjia
  • wuxianzhenjia
  • 2017年07月04日 16:11
  • 56353

vi中搜索关键字

vi有两种模式,命令模式和编辑模式,用esc和i按键来切换。 要查找文中的关键字,可用 /xxx 即一个斜杠加关键字,然后回车就能找到,用n的大小写按键来向下和向上搜索。 这样会搜索文中所有出现xxx...
  • qiuchangyong
  • qiuchangyong
  • 2012年02月11日 14:16
  • 7293

搜索当前页面中的关键字让关键字变色

  String.prototype.trim = function() { return this.replace(/^/s+|/s+$/g,); }//通过点击事件触发函数function sub...
  • xiechunmei13
  • xiechunmei13
  • 2009年11月24日 18:05
  • 3235

百度地图搜索关键字总集

百度地图搜索关键字:  百度Map关键字搜索圆形覆盖物
  • hewusheng10
  • hewusheng10
  • 2014年09月26日 09:43
  • 1892

ajax模拟关键字智能匹配搜索效果

准备数据keyword.json:(这里只贴出部分数据) [ {"id":1,"initial":"ad","keyword":"奥迪"}, {"id":2,"initial":"ada4l"...
  • xiaozhi_2016
  • xiaozhi_2016
  • 2016年12月22日 16:41
  • 1334

android 搜索自动匹配关键字并且标红

/** * 多关键字查询表红,避免后面的关键字成为特殊的HTML语言代码 * @param str 检索结果 * @param inputs 关键字集合 * @param resS...
  • shaoyezhangliwei
  • shaoyezhangliwei
  • 2016年07月29日 11:53
  • 4195

搜索结果页面关键字加红加粗

后台代码List nlist= query.list();   for(Notice notice:nlist){   notice.setTitle(notice.getTitle().replac...
  • jethai
  • jethai
  • 2016年08月28日 14:00
  • 456
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ntext搜索关键字
举报原因:
原因补充:

(最多只允许输入30个字)