SQL Server7.0 Web资料搜寻技巧


「资料库资料」搜寻:使用SQL指令的LIKE语法、或Microsoft SQL Server
7.0的中文全文检索(Full Text Search)功能。
Microsoft Index Server
於Windows NT Option Pack当中所包括的Microsoft Index Server,提供中
文全文检索的搜寻功能,可以搜寻网站中Microsoft word 或Microsoft
Excel档案、text、HTML、ASP等档案格式内的资料。
SQL指令LIKE搜寻
 
一般资料库资料的搜寻,可以使用SQL指令的LIKE语法,如下:
select * from 资料表名称 where 栏位名称 LIKE '%搜寻的字串%’
譬如:「select * from 客户 where 地址 LIKE '%台北市%’」可以搜寻
到客户资料表当中地址栏位有包含台北市的资料。
使用LIKE语法的最大缺点,为动作太慢,因为必须对资料库里的资料一笔
一笔地做搜寻。另外,虽然Access资料库的Memo类型栏位资料也可以搜寻
得到,但是无法搜寻某些类型的栏位资料,譬如SQL Server的Text类型的
栏位资料无法使用SQL指令LIKE语法做搜寻。
SQL Server 7.0全文检索
对资料库的资料做搜寻,最好的方式为使用Microsoft SQL Server 7.0的
Full Text Search功能,可以对Char、Varchar、Text、NText、NChar、
NVarchar类型栏位的资料做中文全文检索的搜寻功能。
您必须安装Microsoft SQL Server 7.0的Full Text Search部份,这部份
并未包括於SQL Server 7.0的一般安装步骤当中,必须另外安装,才可以
使用中文全文检索的搜寻功能。
设定待搜查资料表的步骤
首先要设定待搜查的资料表,方法为执行 [SQL Server Enterprise Manager],
於待搜查的资料表譬如 [Northwind] 资料库的 [Customers] 资料表上按右键,
选择 [Full-Text Index Table] 的 [Define Full-Text Indexing on a Table
]。即会显示 [Full-Text Indexing Wizard] 的画面。按下 [下一步],选择做
为唯一索引的栏位。按下 [下一步],选择做为唯一索引的栏位。按下 [下一步
],选择或新产生一个储存索引资料的catalog。
接着按下 [New Schedule] 按钮排定索引行程,设定多久做一次索引,[Job
type] 可选择 [Full] 或 [Incremental],[Full] 表示对整个资料表的资料重
新做索引,[Incremental] 表示仅对资料表异动的资料做索引,譬如排定每天
半夜对资料表异动的资料做一次索引。按下 [OK] 和 [下一步],即定义好设定
待搜查的资料表。
这时候并未对待搜查的资料表做索引,必须於[Full-Text Catalogs] 中所设定
的catalog 如 [客户] 按右键选择 [Start Population] 的 [Full Population]
对整个资料表的资料重新做索引。
以上设定将於每天半夜对资料表异动的资料做一次索引。资料表的资料有异动
时,因为并未立即做索引,必须於隔天半夜做一次索引後,才可以搜寻到异动
的资料。
透过网际网路搜寻资料库的资料
如何透过网际网路或intranet,搜寻伺服器资料库的资料呢?在Windows NT的
平台上,最好的选择就是使用IIS(Internet Information Server)的网站伺
服器,采得ASP(Active Server Pages)撰写程式。
让我们先来看看Microsoft SQL Server 7.0的中文全文检索(Full Text
Search)范例ft1.ASP的执行结果,於用户端使用浏览器,浏览执行ft1.ASP的
结果,显示搜寻到资料的记录。
SQL Server 7.0的中文全文检索十分简易,只要於SQL指令使用CONTAINS的语
法,如下:
select * from 资料表名称 where CONTAINS( 栏位名称, '搜寻的条件’)
譬如:「SELECT * FROM Customers where CONTAINS(Address,'台北市')」可
以搜寻到客户资料表当中地址栏位有包含台北市的资料。

首先於ASP程式设定连结到资料库,连结到SQL Server资料库
的ASP程式如下:
cn.Open "Driver={SQL Server};Database=资料库名称;Server=(Local);
UID=sa; PWD=”
设定了资料库连结後,第二个步骤就是要下SQL指令,将SQL指令查询的结果储
存到Recordset物件rs当中,由rs(“栏位”) 读取资料库栏位的资料,
rs.MoveNext移动到下一笔记录,经由rs.EOF判断是否已经到最末笔,配合
Do while…Loop就可以取得查询结果的所有记录。
SQL Server 7.0除了提供ODBC驱动程式外,也提供了OLE DB Provider,ASP如
何透过OLE DB存取SQL Server呢?
ASP程透过OLE DB 与ODBC驱动程式存取SQL Server 的差异处,为OLE DB 须指
定Provider是谁,即只要多加一行「cn.Provider = "sqloledb"」程式就可以
了,其他与ODBC驱动程式存取SQL Server 的方法相同。连结到SQL Server资
料库的ASP程式如下:
cn.Provider = "sqloledb"
cn.Open "server=(Local);uid=sa;pwd=;database=资料库名称"
搜寻的条件可以使用AND、OR、NEAR等关键字。另外除了CONTAINS外,也可以
使用FREETEXT的语法。详细语法请参考SQL Server 7.0的Books Online。

本文作者:
« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3