我有一个数据不佳的数据库。我正在寻找一种方法来将列中的值集减少到最低限度,而不会丢弃信息。
示例:
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 DOO
或FOO FOO
)
数据库是Oracle 10g。我知道FOO.FOO
和UTL_MATCH.EDIT_DISTANCE
函数,但在这种情况下我不能用它们来处理它们。上一个UTL_MATCH.JARO_WINKLER
查询应该在10000行以下。
答案 0 :(得分:0)
主要问题是定义什么是“相似”。您需要指定一个DETERMINISTIC方式来说明两个字符串是否相似。
考虑创建一个你应该填写的函数MyFanceAreSimilarFunction(string1,string2)
。如果您知道如何检查它们是否相似,那么您将能够对其进行编码:)。之后只是将它添加到where子句中。
另外,请查看SOUNDEX