簡體   English   中英

左連接上的模糊匹配

[英]Fuzzy match on a left join

例如,我希望加入兩個匹配率為 90% 的表。

以下面的示例為例,我想在電話號碼上加入表 A 和表 B。 您可以看到電話號碼略有不同(國際代碼)。 我希望最終結果顯示為表 C。

我想它會是這樣的,但連接會指定匹配 90% 的phone_number

select
a.*,
b.most_recent_booking_date
from a 
left join b
on a.phone_number = b.phone_number

希望這很清楚,任何幫助都會很棒! 干杯!

表 A

電話號碼 最近通話日期
441234567891 22 年 1 月 5 日
441234567892 02/05/22

表 B

電話號碼 最近的預訂日期
+441234567891 22 年 3 月 5 日
+441234567892 22 年 4 月 5 日

表 C

電話號碼 最近通話日期 最近的預訂日期
441234567891 22 年 1 月 5 日 22 年 3 月 5 日
441234567892 02/05/22 22 年 4 月 5 日

你可以嘗試這樣的事情,但我不喜歡它,因為 Demeteor 說你應該有一個 ID 才能加入。 請注意,我在這里使用左連接,以防表#T2 中沒有數據。 我還在考慮一個計算列,它會刪除 +,然后你也可以加入這種方式。 如果電話號碼可能是狡猾的,我也會被告知 SQL 注入。

CREATE TABLE #T1 (
    PhoneNumber VARCHAR(20) NOT NULL, 
    CallDate DATE NOT NULL
);

CREATE TABLE #T2 (
    PhoneNumber VARCHAR(20) NOT NULL, 
    BookingDate DATE NOT NULL
);

INSERT INTO #T1 (PhoneNumber, CallDate)
VALUES
('441234567891', '20220501'),
('441234567892', '20220502');


INSERT INTO #T2 (PhoneNumber, BookingDate)
VALUES
('+441234567891', '20220503'),
('+441234567892', '20220504');

GO

SELECT *
FROM #T1 AS T1
LEFT JOIN #T2 AS T2 ON T2.PhoneNumber LIKE '%' + T1.PhoneNumber;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM