我想在表格中进行搜索,但不像你想的那样简单。
我有一个混合阵列(例如搜索键是'第二次世界大战'从这里我创建像这样的混合阵列'第二','第二世界' 39;,'第二次世界大战'第二次战争'等等)我想从中获得最佳匹配。我的想法是我通过一个循环遍历数组并比较两个单词caracters并将百分比结果放到一列而不是按计算的百分比排序结果。
我找到了一个计算百分比的函数,但是如何创建一个遍及数组并调用函数的查询?
很抱歉,但我在sql中不够好:/
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'))
这是我的代码,但"当前名称"只是一个例子。我不知道该怎么做:/
答案 0 :(得分:1)
如果您要存储此阵列'在表格中(每个搜索词一个记录)然后你就可以这样做:
假设您将搜索字词列表存储在表格SearchTerm
,列Term
中:
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
这会将FullName
和Email
与表格中的所有字词进行比较并返回匹配
答案 1 :(得分:0)
如果你想逐个“循环”记录,请使用CURSOR。在这里查看示例: http://technet.microsoft.com/pl-pl/library/ms180169(v=sql.110).aspx
答案 2 :(得分:0)
这是一种通用的方式来完成你所说的你想要实现的目标。
select yourfields
from yourtables
where 1 = 2
code to start your loop
or somefield like '%SomeVariableDefinedInYourLoop%'
code to stop your loop
详细信息取决于您是在应用程序级别还是数据库级别编写代码。它们还依赖于数据库引擎和/或编程语言。