Oracle11g Oracle文本功能

Oracle11g Oracle文本功能,oracle11g,Oracle11g,我需要从oracle中的自由格式字符串(自由格式字符串是用户输入并存储在数据库的一列中)派生国家,并存储此派生值。 要推导的条件基于以下任一场景: 1) 国家/地区的代码/country/city/zip(仅适用于我们)可能在字符串中的任何位置,有时可能不止一次命中。 2) 如果字符串中提供了邮政编码(适用于美国城市)(邮政编码城市州查找参考表为我们存储了此信息),则应派生国家/地区。 3) 国家名称及其对应的2个字符的国家代码(或ISO代码)出现在字符串中(同样存储在查找参考表中)。 4) 在

我需要从oracle中的自由格式字符串(自由格式字符串是用户输入并存储在数据库的一列中)派生国家,并存储此派生值。 要推导的条件基于以下任一场景:

1) 国家/地区的代码/country/city/zip(仅适用于我们)可能在字符串中的任何位置,有时可能不止一次命中。 2) 如果字符串中提供了邮政编码(适用于美国城市)(邮政编码城市州查找参考表为我们存储了此信息),则应派生国家/地区。 3) 国家名称及其对应的2个字符的国家代码(或ISO代码)出现在字符串中(同样存储在查找参考表中)。 4) 在某些情况下,国家将直接出现在输入字符串中

假设1个城市/国家输入字符串的简单情况是:德意志银行,纽约123号单位

由于字符串包含“newyork”,因此国家派生词是美国(基于匹配国家/城市的查找信息)

现在,诀窍是当字符串上可能有多个点击: 德意志银行,台湾123号单位

在上面的字符串(一个简单的多点击字符串)中,至少有2种可能性:DE,TAIWAN(DE对应于查找参考中的德国,TAIWAN在字符串中拼写)。 在这种情况下,必须有一种排名机制,根据某些标准对这两种可能性进行加权:比如说,如果一个国家最初是在字符串中指定的,那么它的权重将高于另一个国家的代码等。 这种需要赋予更多权重的选择可以根据需求进行配置。如果以后,需求建议给代码更高的权重,那么它应该只需要更改元数据来改变权重,结果应该反映出更改

在技术方面,我使用regexp和简单的字符串操作创建了一个pl/sql代码,这些操作完成了其中的一些操作。但是,它的速度非常慢,而且在涵盖其中一些场景方面存在局限性,坦率地说,这是一种我不喜欢的方法。我们只是想把第一个原型送出去。所以,我们不得不赶时间。 但是,现在我们希望简化性能方法,因为每天都有数千个输入行(约30K)包含这些输入字符串,并且需要动态地或至少作为一个批处理,但响应速度更快

我正在阅读有关Oracle文本功能作为一种设计方法的文章,并对我一直在寻找的一些功能感到惊喜。然而,我不知道从哪里开始,因为我以前没有使用过oracle文本功能,尽管我已经开始阅读它。 非常感谢专家们的指点

环境:Oracle11g

谢谢,
凯西

你的第一个例子和第二个例子是一样的。为什么纽约打败了德意志银行而台湾却没有?试图决定世界范围内的国家是极其困难的。是的,你必须称重,这样做是一个好主意,从字符串的结束偏移。但是,为此,您只需要正则表达式。没有真正需要使用Oracle文本。我们有大约5000行Python代码来完成这项工作……嗨,Ben,谢谢你的回复。我的例子不尽相同。在第一种情况下,没有歧义,因为您只有一个城市(德意志不是一个城市或国家,它不会存储在参考表中)。因此,第一个示例只会给您一次点击。我提供的第二个示例会给您两个点击:AG是参考表中维护的国家的国家代码(安提瓜和巴布达的缩写形式)和台湾,这使得它成为一个字符串,可以生成这两个国家中的一个,因此,需要加权。希望澄清。如果它是逗号分隔的,那么你可以用逗号分割并解决这个问题。如果它不是逗号分隔的(并且是完美的),那么您的假设是不正确的。出现的不同拼写和拼写错误的国家数量是天文数字。例如,这里有一些给安格鲁的:安哥拉,众议员波普。安哥拉,安哥拉共和国,安哥拉共和国,这是一个用户输入的自由格式字段(通常包含银行名称和地址,但可能并不总是遵循此地址规则)。不幸的是,分隔符无法强制执行或保证。我同意你对拼写错误和解释的评估。这种情况下的要求是通过维护参考列表,以编程方式进行最佳猜测。我们不会将数据保存为安哥拉共和国,而是保存为安哥拉。只要安哥拉这个词(或其等效代码)存在,我们就很好。