【发布时间】:2022-07-06 19:43:31
【问题描述】:
我想找到具有不同拼写/表达(缩写)示例的相同地址,如下所示。但我的查询不起作用。例如 St-->Street(正确)但 Street-->Streetict。 这是代码。
SELECT B_ADDRESS,H_ADDRESS, REGEXP_REPLACE(REGEXP_REPLACE(B_ADDRESS,'S[a-z]r.|(St.)','Street'),'(Dist.)|(Dt.)','Street') as B_NEW,
REGEXP_REPLACE(REGEXP_REPLACE(H_ADDRESS,'(Str.)|(St.)','Street'), '(Dist.)|(Dt.)','District') as H_NEW
FROM (
SELECT H_ADDRESS,B_ADDRESS
FROM
(
SELECT 'Washington Str. No:60 ABD' AS H_ADDRESS,'Washington Street No60 ABD' AS B_ADDRESS FROM DUAL UNION ALL
SELECT 'Pennsylvania Dt. St. No 6 ABD' AS H_ADDRESS,'Pennslyvania District Street No6 ABD' AS B_ADDRESS FROM DUAL UNION ALL
SELECT 'Onion Dist. No 63 Kartal' AS H_ADDRESS,'Onion District No 61 Kartal' AS B_ADDRESS FROM DUAL
)
)
感谢您的帮助。我编写了如下代码并且它正在工作。
SELECT B_ADDRESS,H_ADDRESS,B_ADDRESS_C,H_ADDRESS_C,
UTL_MATCH.jaro_winkler_similarity(B_ADDRESS_C,H_ADDRESS_C) AS JWS,
UTL_MATCH.jaro_winkler(B_ADDRESS_C,H_ADDRESS_C) AS JW,
UTL_MATCH.edit_distance_similarity(B_ADDRESS_C,H_ADDRESS_C) AS EDS,
UTL_MATCH.edit_distance(B_ADDRESS_C,H_ADDRESS_C) AS ED
FROM (
SELECT H_ADDRESS,B_ADDRESS,
INITCAP(REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(H_ADDRESS,'S[a-
zA-Z]{1,}|S[a-zA-Z]r|S[t]','Street'),'D[a-zA-Z]{1,}|D[a-zA-Z]
{1,}|D[a-zA-Z]','District'),'[.: ]',' ')) AS H_ADDRESS_C,
INITCAP(REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(B_ADDRESS,'S[a-
zA-Z]{1,}|S[a-zA-Z]r|S[t]','Street'),'D[a-zA-Z]{1,}|D[a-zA-Z]
{1,}|D[a-zA-Z]','District'),'[.: ]',' ')) AS B_ADDRESS_C
FROM
(
SELECT 'Washington Str. No:60 ABD' AS
H_ADDRESS,'Washington Street No60 ABD' AS B_ADDRESS FROM DUAL UNION
ALL
SELECT 'Pennslyvania Dt. St. No 6 ABD' AS
H_ADDRESS,'Pennslyvania District Street No6 ABD' AS B_ADDRESS FROM
DUAL UNION ALL
SELECT 'Onion Dist. No 63 Kartal' AS H_ADDRESS,'Onion
District No 61 Kartal' AS B_ADDRESS FROM DUAL
)
)
【问题讨论】:
标签: sql oracle regexp-replace