1

我有一个数据不佳的数据库。我正在寻找一种方法来将列中的值集减少到最低限度,而不会丢弃信息。

例子:

SELECT VALUE, COUNT(*) FROM TABLE GROUP BY VALUE;

VALUE     |COUNT(*)
FOO FOO   |50000
FOO.FOO   |40000
FOO DOO   |40
BAR BAR   |60000
BAR.BAR   |45000
BAR BAZ   |30
...

我想找到可以向我显示数据正在收敛的组的查询(并帮助我对FOO FOO<->FOO.FOO和自动化FOO DOO->FOO FOO或做出明智的选择FOO.FOO

数据库是Oracle 10g。我知道UTL_MATCH.EDIT_DISTANCEUTL_MATCH.JARO_WINKLER功能,但在这种情况下我无法使用它们。上一个GROUP BY查询应该少于 10000 行。

4

1 回答 1

0

主要问题是定义什么是“相似的”。您需要指定一种 DETERMINISTIC 方式来判断两个字符串是否相似。

考虑创建一个MyFanceAreSimilarFunction(string1,string2)应该填充的函数。如果您知道如何检查它们是否相似,您将能够对其进行编码:)。之后只是将其添加到 where 子句中。

另外,看看SOUNDEX

于 2013-09-13T09:56:03.340 回答