如何在Oracle中找到类似的值?

时间:2013-08-21 15:55:33

标签: sql database oracle

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

示例:

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做出明智的选择并自动化{{ 1}} - > FOO DOOFOO FOO

数据库是Oracle 10g。我知道FOO.FOOUTL_MATCH.EDIT_DISTANCE函数,但在这种情况下我不能用它们来处理它们。上一个UTL_MATCH.JARO_WINKLER查询应该在10000行以下。

1 个答案:

答案 0 :(得分:0)

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

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

另外,请查看SOUNDEX