我有一组记录,需要使用条件进行搜索。但标准返回了多行。
因此,我需要条件匹配百分比最高的前 2 条记录。
我研究了模糊逻辑,但发现对于如此简单的问题来说它太复杂了。我有如下场景:
SELECT DISTINCT FirstName, LastName, CountryName, StateName FROM Employee
例如,上面的一个返回了我 5 条记录。
我想要的是使用“like”运算符,通过它我可以找到像“%Gujarat%”这样的州名和像“%India%”这样的国家名与上述五个记录的匹配百分比。
一旦获得此匹配百分比,我将选择匹配百分比最高的前 2 条记录。
这将使我获得一些准确的数据。
有使用 sql server 的想法吗?
最佳答案
据我了解,您需要类似 Fuzzy String Matching using Levenshtein Distance Algorithm 的内容。希望该链接对您有所帮助。
您需要计算 CountryName 和搜索模式之间的距离。它并不完全是“百分比”,但它可以衡量相关性。
也许这可以解决您的问题?
SELECT TOP 2 FirstName, LastName, CountryName, StateName
FROM Employee
WHERE
statename like '%Gujarat%' AND countryname like '%India%'
ORDER BY
dbo.edit_distance(statename, 'Gujarat') + dbo.edit_distance(CountryName, 'India') DESC
关于sql-server - 如何在sql server中使用like运算符选择匹配百分比高于其他记录的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10090217/