首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用循环和数组的SQL搜索

使用循环和数组的SQL搜索
EN

Stack Overflow用户
提问于 2014-10-03 11:50:04
回答 3查看 187关注 0票数 2

我想做一个查询,在一个表中搜索,但不像你想的那么简单。

我有一个混合数组(例如,搜索键是“第二次世界大战”,由此创建的混合数组类似于“第二次”、“第二次世界”、“第二次世界大战”、“第二次战争”等等)。我想从中得到最好的匹配。我的想法是,通过循环遍历数组,比较两个单词字符,并将百分比结果放到列中,而不是按计算出的百分比对结果排序。

我找到了一个计算参数的函数,但是如何创建一个查询,通过数组调用这个函数呢?

对不起,我在sql :/方面还不够好

代码语言:javascript
复制
SELECT 
    P.FullName, 
    K.Shortname, 
    (P.VoteSumm / P.VoteCount) AS Rate, 
    [dbo].GetPercentageOfTwoStringMatching](P.FullName, CurrentName)
FROM [Test].[dbo].Table1 AS P
    LEFT OUTER JOIN [Test].[dbo].Table2 AS UC ON UC.ID = P.UcID
    LEFT OUTER JOIN [Test].[dbo].Table3 AS K ON K.ID = P.KarID
    LEFT OUTER JOIN [Test].[dbo].Table4 AS PV ON PV.OwnerID= P.ID
WHERE
    (P.Deleted IS NULL) 
    AND
    (P.FullName LIKE '%kiss%' 
        OR P.FullName LIKE '%kisstamás%' 
        OR P.FullName LIKE '%tamás%') 
    OR 
    (P.Email IN ('kiss','kiss tamás','tamás') 
        OR UC.ShortName IN ('kiss','kiss tamás','tamás') 
        OR UC.Name IN ('kiss','kiss tamás','tamás') 
        OR K.ShortName IN ('kiss','kiss tamás','tamás') 
        OR K.Name IN ('kiss','kiss tamás','tamás'))

这是我的代码,但“当前名称”只是一个例子。我不知道怎么做

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-03 12:36:26

如果要将这个“数组”存储在一个表中(每个搜索项都有一个记录),那么只需这样做:

假设您将搜索词列表存储在表SearchTerm中,列Term

代码语言:javascript
复制
SELECT P.FullName, T.Term
FROM [Test].[dbo].Table1 AS P
INNER JOIN
SearchTerm T
ON
(
  P.FullName LIKE '%' + T.Term + '%'
  OR 
  P.Email LIKE '%' + T.Term + '%'
)
WHERE P.Deleted IS NULL

这将比较FullNameEmail与表中的所有术语,并返回匹配项。

票数 1
EN

Stack Overflow用户

发布于 2014-10-03 11:55:42

如果您想按记录“循环”记录,请使用游标。参见这里的一个示例:http://technet.microsoft.com/pl-pl/library/ms180169(v=sql.110).aspx

票数 0
EN

Stack Overflow用户

发布于 2014-10-03 12:06:49

这是一种通用的方法来做你说你想要达到的目标。

代码语言:javascript
复制
 select yourfields
 from yourtables
 where 1 = 2

 code to start your loop
 or somefield like '%SomeVariableDefinedInYourLoop%'
 code to stop your loop

详细信息取决于您是在应用程序还是在数据库级别上编写代码。它们还依赖于数据库引擎和/或编程语言。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26178424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档