sql-server - 如何在sql server中使用like运算符选择匹配百分比高于其他记录的记录?

标签 sql-server sql-like

我有一组记录,需要使用条件进行搜索。但标准返回了多行。

因此,我需要条件匹配百分比最高的前 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/

相关文章:

mysql - 不像 MySQL 语句

sql-server - 在单独的内存分配中运行 SSIS 包或增加默认缓冲区大小?

sql - 将数据从表复制到执行 INSERT 或 UPDATE 的表

mongodb - 如何使用 golang 的 mgo 包进行类似查询

mysql - mysql中模式匹配和日期时间函数的混合

mysql - MySQL 中的 log-queries-not-using-indexes 和 LIKE

sql - 使用 bacpac 导入数据层应用程序

sql-server - 修复 DBCC CHECKDB 错误。恢复无效。

sql-server - 如何在where子句中检查表值参数是否为空?

MYSQL:类似方法,相似单词 - 但不显示搜索到的单词