酷徒LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:tab  database-driven  IMP  数据  Drive  搜索引擎  搜索    

介绍

我们要从数据库中搜索数据,我们将创建一个视图,搜索所有相关表的数据。

背景

要从数据库中获取信息,我们需要查询每个表,我们不知道巫师表或者关系。

使用代码

我们将创建一个视图来保存所有相关表和数据以进行搜索

视图- SearchData


选择 LastName + FirstName + 昵称作为 SearchText,
PersonId作为 Id,'人员'作为 TableName,'PersonId'作为 IdField
来自 dbo.Person
并集
选择名字为 SearchText + LastName,DOCTORId为 Id,'医生'为 IdField,'DOCTORId'为
来自 dbo.DOCTOR

SearchText: 包含要搜索数据的表的字段

Id: 包含索引字段的值

TableName: 包含表名称

IdField: 使用Id值包含相关表的查找记录的字段名称



从搜索字符串创建表的功能

函数 [dbo]。[String_Split] ( @String nvarchar ( 4000 ),@Delimiter nvarchar ( 10 ) ) 返回ValueTable表( [Value] nvarchar(4000) )

开始

声明 @NextString nvarchar ( 4000 )

声明 @Pos int

声明 @NextPos int

声明 @CommaCheck nvarchar ( 1 )

设置 @NextString =""'

设置 @CommaCheck = 右( @String,1 )

设置 @String = @String + @Delimiter

设置 @Pos = charindex ( @Delimiter,@String )

设置 @NextPos = 1

同时( @pos <> 0 )

开始

设置 @NextString = 子字符串( @String,1,@Pos - 1 )

插入 @ValueTable ( [Value] ) 值( @NextString )

设置 @String = 子字符串( @String,@pos +1,len ( @String ) )

设置 @NextPos = @Pos

设置 @pos = charindex ( @Delimiter,@String )

结尾

返回

结尾

获取搜索数据

过程 [dbo]。[AdvanceSearch] @searchtring varchar ( 1000 )
作为
开始

--declare @searchtring varchar ( 1000 )
--set @searchtring =',jo"'

设置 @searchtring = 替换( @searchtring',','"
设置 @searchtring = 替换( @searchtring';',''
设置 @searchtring = 替换( @searchtring'。',')
--set @searchtring = 替换( @searchtring'。',')

--select'%'+ 值+'%'作为 String_Split ( @searchtring''的键)


选择 count(Id) 作为 MatchFildsCount,SearchText,Id,TableName,IdField
来自SearchData连接
( 从 String_Split ( @searchtring''中选择'%'+ 值+'%') ) searchKeyTable
在SearchText像键上
GROUP BY SearchText,Id,TableName,IdField
ORDER BY 计数( Id ) 描述

结尾

e.g。

AdvanceSearch n'wi,,先生'

MatchFildsCount

SearchText

Id

名称表

IdField

2

BradmanJohnSir

3

人员

PersonId

2

WilliamsJohn

5

人员

PersonId

1

WinstonChurchillWinky

45

人员

PersonId

1

CookJoanJoan

34

人员

PersonId

1

JohnriedMan

3

医生

DOCTORId

1

JonesDeanJon

35

人员

PersonId

1

JonesMariaMaria

43

人员

PersonId

1

LeoWilliams

28

医生

DOCTORId

1

LeoWilliams

30

医生

DOCTORId

1

LeoWilliams

31

医生

DOCTORId

1

LeoWilliams

32

医生

DOCTORId

1

TaylorJonesjones

30

人员

PersonId

1

WilliamsHarryHarry

59

人员

PersonId



文章标签:数据  IMP  Drive  tab    搜索  tables  搜索引擎  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备17041772号-2  |  如果智培  |  酷兔英语  |  帮酷