Sql 使用带有通配符的表值参数? 场景。。。
我正在ASP.net和visualbasic中开发一个网站,显示用户生成的产品列表(以下称为“帖子”)。在这个网站上,我有一个搜索框,允许用户更容易地找到他的文章。搜索框的设计允许用户输入特定的关键字,这将有望提供更定制的搜索。例如: 在上面的示例中,用户指定他希望搜索与作者姓名“John Smith”以及标签“Crime”和“Suspent”匹配的书籍 步骤:Sql 使用带有通配符的表值参数? 场景。。。,sql,vb.net,search,search-engine,table-valued-parameters,Sql,Vb.net,Search,Search Engine,Table Valued Parameters,我正在ASP.net和visualbasic中开发一个网站,显示用户生成的产品列表(以下称为“帖子”)。在这个网站上,我有一个搜索框,允许用户更容易地找到他的文章。搜索框的设计允许用户输入特定的关键字,这将有望提供更定制的搜索。例如: 在上面的示例中,用户指定他希望搜索与作者姓名“John Smith”以及标签“Crime”和“Suspent”匹配的书籍 步骤: 我的SearchBoxManager类检索这些键名(作者, 标签)和关键值(约翰·史密斯、犯罪、悬念) 我使用这些参数运行SQL查询
问题是。。。 为了使第三步正常工作,我想将键值中的每一组分隔词放入一个表值参数中,然后在由通配符“%”包围的SqlCommandText中使用该表值参数 换句话说,因为每个键值中的字数每次都可能改变,所以我需要将它们放在某种表值参数中。我还认为我可以以某种方式将它们串在一起,直接在查询字符串中使用它们,但我中途停了下来,因为它变得有点混乱
问题是。。。
- 我可以对表值参数使用通配符吗?如果可以,如何使用
create table authors ( id int, name varchar(200) )
insert into authors values (1, 'John Smith')
insert into authors values (2, 'Jack Jones')
insert into authors values (3, 'Charles Johnston')
如果您想使用一个表变量,我们可以创建一个表变量,并用几个搜索词填充它
declare @t table(word varchar(10) )
insert into @t select 'smith' union select 'jones'
现在我们可以使用通配符进行选择
select authors.* from authors, @t words
where authors.name like '%'+words.word+'%'
所以一些样本数据
create table authors ( id int, name varchar(200) )
insert into authors values (1, 'John Smith')
insert into authors values (2, 'Jack Jones')
insert into authors values (3, 'Charles Johnston')
如果您想使用一个表变量,我们可以创建一个表变量,并用几个搜索词填充它
declare @t table(word varchar(10) )
insert into @t select 'smith' union select 'jones'
现在我们可以使用通配符进行选择
select authors.* from authors, @t words
where authors.name like '%'+words.word+'%'
好的,太好了,我来试一试,如果成功的话,我会把它标记为正确的!非常感谢,先生。好的,太好了,我会试一试,如果成功的话,我会把它标记正确!非常感谢,先生。事实证明,全文搜索和相关性排序是一个常见但高级的数据挖掘软件工程问题(imo)。最好的选择可能不是自行开发,而是将现有的全文搜索API适应您的数据集(如果数据集很大的话)。因特网上的全文搜索有相当多的一般信息,但是如果你在寻找一个开源的话,那么全功能的API库就不比Apache软件基金会及其Lucene API,或者围绕Lucene构建的SOLR引擎(听起来像你可能需要SOLR)。事实证明,这是一个常见但高级的数据挖掘软件工程问题(imo)。最好的选择可能不是自行开发,而是将现有的全文搜索API适应您的数据集(如果数据集很大的话)。在因特网上搜索全文信息有相当数量的信息,但是如果你正在寻找一个开源的话,全功能的API库就不比Apache软件基金会及其Lucene API,或者围绕Lucene构建的SOLR引擎(听起来像你可能需要SOLR)。