HASH 何时将key加载到h.definedata()中

在实践从地址中提取省份时,发现HASH没作用?

DATA D.T1(KEEP= PROVINCE REPORT_ID GET_DATE ADDRESS);
SET D.T;
IF _N_=0 THEN SET S.PROVINCE_1;/*该数据集包含所有省份简称P_1 和省份全称PROVINCE*/
IF _N_=1 THEN DO;
DECLARE HASH H_P(DATASET : 'S.PROVINCE_1',ORDERED:'NO');
DECLARE Hiter HI_P('H_P');
H_P.DEFINEKEY('Province_ShortName');
H_P.DEFINEDATA('P_1');
H_P.DEFINEDONE();
CALL MISSING (P_1);
END;
IF Province ='' THEN DO;
RC=HI_P.FIRST();
DO WHILE(RC=0);
IF FIND(ADDRESS,COMPRESS(Province_ShortName))>0 THEN
DO;
TEMP= COMPRESS(P_1);
Province=TEMP;
END;
RC=HI_P.NEXT();
END;
END;

RUN;

此处HASH没起到作用是因为遍历语句中用到key值的判断,但是定义HASH时,并没有将Province_ShortName(key)放到需要保存的数据里

H_P.DEFINEDATA('P_1');改为H_P.DEFINEDATA('P_1',‘Province_ShortName’);

 

转载于:https://www.cnblogs.com/Anni-love-Ferris-wheel/p/7462806.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值