SQL(netezza或proc sql):创建ID列(随机,非重复整数)

问题描述 投票:0回答:1

假设我有一个名为“sourcetable”的表,其中包含colA,colB,colC。我只想创建一个具有非重复,唯一和随机整数的id列。如何在netezza sql或使用proc sql(SAS)创建它?

sql sas netezza id aginity
1个回答
0
投票

为了确保唯一性,您肯定会将id限制为主键或唯一。

SAS函数UUIDGENRANUNI是在计算时生成具有非常高的唯一性概率值的候选者。我认为没有任何简单/隔离的功能可以保证100%它不会计算先前返回的值。

UUIDGEN返回一个36字节的字符值,如170bf2ef-16c7-4b7f-b25b-000333d9679b

按1E15缩放的RANUNI将返回最多14位的整数值。

data want;
  do i = 1 to 100;
    id_v1 = uuidgen();
    id_v2 = floor(1e15 * ranuni(0));
    output;
  end;
  format id_v2 15.;
run;

对于Netezza,试试看SO How to overcome Netezza's lack of unique constraint/referential integrity enforcement?

© www.soinside.com 2019 - 2024. All rights reserved.