[英]How to do bestmatch on a column in SQL Server table?
我有一個要在表的列中搜索電話號碼的要求。 電話號碼的長度恰好大於表中的長度。
在這種情況下,如何進行最佳匹配以獲取與電話號碼最匹配的列值?
您可以使用charindex來搜索您的searchvalue中是否存在列phone
的值
select *
from MyTable t
where charindex(t.phone, '0123456789') > 0
這將查找列電話內容位於“ 012345789”內的任何行
另一個選擇是使用全文搜索中的contains
功能。
參見此處: https : //docs.microsoft.com/zh-cn/sql/t-sql/queries/contains-transact-sql?view=sql-server-2017
您可以實現Levenshtein distance之類的功能:
兩個單詞之間的距離是將一個單詞轉換為另一個單詞所需的最小單字符編輯(插入,刪除或替換)次數
有許多實現方法,它們在性能方面有所不同,請參見有關此方法的其他答案和文章
例如 :
SELECT LEVENSHTEIN('0134227897', num) as distance , num
FROM (VALUES ('0134752267'),
('+336709057'),
('+3347578974') ) AS t(num)
order by distance
結果將是:
Distance num
5 +3347578974
5 0134752267
8 +336709057
因此,最佳匹配是距離只有5的兩個數字
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.