我有兩列,我想進行比較以找出它們是否相等,問題是當以不同的方式編寫相同的關鍵字時。
例如,如果 column_1 = 123 Maryland Ave 和 column_2 = 123 Maryland Avenue 這兩個列應該相等,我想在查詢中創建第三列以顯示它們是否相等,謝謝您的幫助!
Column_1 Column_2 Equal?
-----------------------------------------------------------
123 Maryland Ave 123 Maryland Avenue Yes
456 Maryland Ave 123 Maryland Ave No
一種選擇是檢查這些值之間的相似性:
SQL> with test (id, col1, col2) as
2 (select 1, '123 Maryland Ave', '123 Maryland Avenue' from dual union all
3 select 2, '456 Maryland Ave', '123 Maryland Ave' from dual
4 )
5 select id, col1, col2,
6 utl_match.jaro_winkler_similarity(col1, col2) as sim
7 from test;
ID COL1 COL2 SIM
---------- ---------------- ------------------- ----------
1 123 Maryland Ave 123 Maryland Avenue 96
2 456 Maryland Ave 123 Maryland Ave 87
SQL>
現在,您必須確定滿足您需求的閾值。是 90% 嗎?讓我們假設它是。然後你會使用CASE
表達式:
SQL> with test (id, col1, col2) as
2 (select 1, '123 Maryland Ave', '123 Maryland Avenue' from dual union all
3 select 2, '456 Maryland Ave', '123 Maryland Ave' from dual
4 )
5 select id, col1, col2,
6 case when utl_match.jaro_winkler_similarity(col1, col2) > 90 then 'Yes'
7 else 'No'
8 end as equal
9 from test;
ID COL1 COL2 EQUAL
---------- ---------------- ------------------- -------
1 123 Maryland Ave 123 Maryland Avenue Yes
2 456 Maryland Ave 123 Maryland Ave No
SQL>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句