【发布时间】:2020-04-10 12:34:04
【问题描述】:
例如,我有 2 个字符串:
- '来源:Siebel;姓名:玛丽·简;性别:F;年龄:24; N;'
- '来源:Siebel;姓名:玛丽;性别:F;年龄:24; N;'
我需要的结果是:
- 姓名:玛丽·简;
- 姓名:玛丽;
很可能我需要反转下面的代码
with cte1 as (
select 1 id, 'Source:Siebel; Name:Mary Jane; Gender:F; Age:24; N;' str from dual
union all
select 2 id, 'Source:Siebel; Name:Marie; Gender:F; Age:24; N;' str from dual
), cte2 as (
SELECT distinct id, trim(regexp_substr(str, '[^ ]+', 1, level)) str
FROM cte1 t
CONNECT BY instr(str, ' ', 1, level - 1) > 0
)
select distinct t1.str
from cte2 t1
join cte2 t2 on (t1.str = t2.str and t1.id != t2.id)
来自 Oracle Function to return similarity between strings
因为结果是相似的 2 个字符串的 [QueryResult]
我无法使用该过程,因为我需要在 Oracle Fusion 中运行此 SQL 脚本
【问题讨论】:
-
为什么以这种格式的数据开头?即使它来自一些只输出复杂字符串的来源,当您将数据导入数据库时,也应该首先对其进行规范化。
-
您好,我使用了该示例数据,因为我正在使用的实际数据是来自 Oracle 接口表和基表的连接值。并且我从两者的结果中进行比较,以确保将 Interface 表中的数据传递到 Base 表中,
-
我不确定我是否理解。数据要么从“接口”传递到“基表”,要么没有;我看不出在这个过程中“玛丽珍”是如何变成“玛丽”的。将数据从一个地方复制或传输到另一个地方可能会在很多方面失败,但更改数据内容的情况非常罕见(我认为)。
标签: sql string oracle difference oracle-fusion-apps