首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ora-hash函数实现分词概念

如何使用ora-hash函数实现分词概念
EN

Stack Overflow用户
提问于 2021-01-08 22:59:41
回答 1查看 51关注 0票数 0

我在网上查过了,但找不到答案。

如何使用ora-hash函数实现分词的概念,你能指导我吗?

EN

回答 1

Stack Overflow用户

发布于 2021-01-09 00:18:07

“使用ORA_HASH函数”仅近似于分包;您可以决定存储桶的数量,并使用ORA_HASH将实体分配给存储桶,但不能保证分配的均衡性。它应该是“或多或少”平衡的(分配给每个存储桶的实体数量大致相等),但这并不准确。那么,第一个问题是:为什么必须是 ORA_HASH ,而不是其他方法?

话虽如此,这里有一种方法可以做到你所要求的。(再次指出,“你问的问题”从一开始就没有多大意义。)假设您的标准SCOTT.EMP表中有14名员工,您必须(随机)将他们分配到三个存储桶中。ORA_HASH创建编号从0到N的存储桶(其中,将N作为函数的输入);如果希望存储桶为1、2、3,则应在N= 2的情况下运行ORA_HASH (以创建存储桶0、1、2),然后在结果中添加1,使存储桶编号为1、2、3。

除此之外,您还可以将ORA_HASH应用于许多数据类型。然后,一个愚蠢的想法是将ORA_HASH应用于雇员的姓氏(例如)。这是愚蠢的,因为姓氏通常不明确;有许多史密斯和琼斯(在美国)而Pryxz很少,所以无论哪个存储桶具有Smith,都可能比其他存储桶拥有更多的员工(因为ORA_HASH会为该名称分配一个存储桶,而不是分配给员工)。您必须将ORA_HASH应用于每个员工的独特信息;例如,应用于EMPNO,或者更简单地应用于Oracle生成的ROWNUM

代码语言:javascript
复制
select 1 + ora_hash(rownum, 2) as bucket, ename
from   scott.emp
order  by bucket, ename
;

BUCKET  ENAME     
------  ----------
     1  ALLEN     
     1  FORD      
     1  JONES     
     1  MARTIN    
     1  MILLER    
     2  ADAMS     
     2  CLARK     
     2  JAMES     
     2  KING      
     2  SCOTT     
     3  BLAKE     
     3  SMITH     
     3  TURNER    
     3  WARD  
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65631353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档