CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  疑难问题

如何查询存储在字段 Image中的内容

楼主JensiaTsang(文正)2003-12-01 09:52:00 在 MS-SQL Server / 疑难问题 提问

比如:我用文件流的形式往image字段型字段中写入一个WORD文件,然后我想做一个查询按钮,输入某个字符,然后往存储在字段中的WORD文件进行搜所,找到后返回关键字前后的某些字符。  
  其实就像google那样的搜索引擎一样啦。  
  表:FID,FImage。从FImage中取出含有用户输入的值的前后N个字符  
  比如:     FImage   中存有"中华人民共和国",当输入"人民"后查询出有人民这个。关键是like   操作好像不行,用IN好像也不行  
  请指教 问题点数:50、回复次数:2Top

1 楼txlicenhe(马可)回复于 2003-12-01 09:55:36 得分 50

http://www.csdn.net/develop/Read_Article.asp?Id=17699  
  CSDN   -   文档中心   -   数据库开发              
       
  标题           全文索引image列,全攻略!         pengdali(原作)      
       
  关键字           全文索引   image    
       
   
   
  今天“百年不遇”的停电了,看了一天书。晚上搞了一下全文索引,决定把心得贴出来,我尽量写的详细,大家共同学习,欢迎指正!  
   
  1、启动   Microsoft   Search   服务  
        开始菜单-->SQL程序组-->服务管理器-->下拉筐-->Microsoft   Search   服务-->启动它  
   
  2、  
      ..\Microsoft   SQL   Server\MSSQL\FTDATA\SQLServer\Config\目录里建一个非空noise.chs文件  
      非空noise.chs文件,也有人说是空的noise.chs文件,但我每次都往里写几个没用的字母。  
   
  3、建立环境  
        打开查询分析器-->执行下列脚本:  
  --------------------------------------------  
  create   database   test   ---创建test数据库  
  use   test                           ---选择test数据库  
  create   table     dali   (ID   int   not   null   primary   key,MyImage   image,FileType   varchar(255),FileNmae   varchar(255))   ---创建dali表  
  --dali表中   Id,MyImage,FileType   三列是必须的,因为要对image列索引的话,必须要有一个主键列,一个image列,一个存放文件类型的列  
  --我们知道在windows系统中文件类型是靠扩展名来区分的所以FileType列也就是用来放   文件的扩展名  
  --------------------------------------------  
   
  sp_fulltext_database   'enable'   --为全文索引启用数据库  
  sp_fulltext_catalog   'My_FullDir',   'create'     ---创建一个叫My_FullDif的全文目录  
   
  declare   @Key   sysname   ;   select   @Key=c.name   from   syscolumns   a,sysconstraints   b,sysobjects   c   where   a.id=object_id('dali')   and   a.name='ID'   and   a.id=b.id   and   b.constid=c.id   and   c.name   like   'PK%'  
  exec   sp_fulltext_table   'dali','create','My_FullDir',@Key     ----这两句是为全文索引,对表进行标记  
   
  sp_fulltext_column   'dali','MyImage','add',0x0804,'FileType'     ---这句是指定MyImage列为全文索引列,FileType是类型列  
  ------------------------------------------------  
  4、在c盘下放一个扩展名为doc的word文件,一个扩展名为xls的excel文件,一个扩展名为htm的网页文件,个扩展名为bmp的图片  
        共4个,大家可根据实际情况放入!  
   
  5、插入数据  
      建立下面这个存储过程  
  --------------------------------------------------  
  CREATE   PROCEDURE   sp_textcopy    
      @srvname         varchar   (30),    
      @login             varchar   (30),    
      @password         varchar   (30),    
      @dbname             varchar   (30),    
      @tbname             varchar   (30),    
      @colname         varchar   (30),    
      @filename         varchar   (30),    
      @whereclause   varchar   (40),    
      @direction     char(1)    
  AS    
  /*   这是使用textcopy工具将文件插入到数据库中,如果有前台工具可以用前台开发工具将文件插入,这里为了演示   */  
  DECLARE   @exec_str   varchar   (255)    
  SELECT   @exec_str='textcopy   /S   '+@srvname+'   /U   '+@login+'   /P   '+@password+'   /D   '+@dbname+'   /T'+@tbname+'   /C   '+@colname+'   /W"'+@whereclause+'"   /F"'+@filename+'"   /'+@direction  
  EXEC   master..xp_cmdshell   @exec_str  
  ----------------------------------------------------  
   
  insert   dali   values(1,0x,'doc','大力的doc')   ---其中第二列是   0x   它是一个16进制数对应image列,是必须的,不要写null,第三列是文件类型,既扩展名  
   
  sp_textcopy   '你的服务器名','sa','你的密码','test','dali','MyImage','c:\大力的doc.doc','where   ID=1','I'  
  -------依次参数是:实例名,用户名,密码,数据库名,表名,image列名,路径及文件名,条件(你必须保证它只选择一行),I  
  ---------------------------------------------------------------------------------------------------------------------  
  insert   dali   values(2,0x,'bmp','图片')  
  sp_textcopy   '你的服务器名','sa','你的密码','test','dali','MyImage','c:\图片.bmp','where   ID=2','I'   --注意条件是   ID=2  
   
  insert   dali   values(3,0x,'xls','Excel文件')  
  sp_textcopy   '你的服务器名','sa','你的密码','test','dali','MyImage','c:\Excel文件.xls','where   ID=3','I'   --注意条件是   ID=3  
   
  insert   dali   values(4,0x,'htm','网页')  
  sp_textcopy   '你的服务器名','sa','你的密码','test','dali','MyImage','c:\网页.htm','where   ID=4','I'   --注意条件是   ID=4  
   
  ----------上面的语句,要保证类型一样,路径正确,条件唯一正确应该就可以了  
   
  6、填充全文索引  
   
  sp_fulltext_table   'dali','start_full'   ---第一个参数是表名,第二个参数是启动表的全文索引的完全填充  
   
  7、可以开始你的实验了  
   
  select   *   from   dali   where   contains(MyImage,'J老师')  
   
  select   *   from   dali   where   contains(MyImage,'海老师')  
   
  ------END----------  
  --调试环境:SQLServer2000企业版、Windows2000高级服务器  
   
   
  Top

2 楼showmetoyou(好的)回复于 2003-12-01 10:04:18 得分 0

GOOD!THANKING!Top

相关问题

  • SOS:SQL SERVER数据库中,IMAGE型字段存储大于32K的文档,用QUERY查询显示......
  • 查询longvarchar字段
  • 存储过程中如何根据输入参数查询相应字段字段?
  • 有一个存储过程,可以动态选择字段进行查询
  • query的字段查询:
  • 日期字段查询
  • 字段为空的查询
  • 字段的模糊查询
  • 空字段如何查询?
  • 查询字段的问题

关键词

  • 字段
  • 文件
  • 字符
  • 数据库
  • microsoft
  • dali
  • textcopy
  • 全文索引
  • 扩展名
  • fimage

得分解答快速导航

  • 帖主:JensiaTsang
  • txlicenhe

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo