将字符串转换为数字并保留前导零

时间:2019-10-07 01:45:48

标签: input sas proc-sql enterprise-guide

我正在尝试将字符串转换为数字并使用以下代码

选择

 PROC SQL;
 CREATE TABLE WORK.CLAIM_HISTORY AS 
 SELECT input(cats(substr(SUBSTR(t1.LIABILITY_CTRT_ID,3),1,length(SUBSTR(t1.LIABILITY_CTRT_ID,3))-6),substr(t1.LIABILITY_CTRT_ID,13)),Z10.) AS GENERAL_INSURANCE_UOE_RK,
      t1.UNDERWRITING_DT
 FROM work.SIN t1
       LEFT JOIN work.custos_agregados_liab t2 ON (t1.CLAIM_NO = t2.CLAIM_NO)
 where t2.COVERAGE_CD <> '999';
 QUIT;

例如,GENERAL_INSURANCE_UOE_RK为0223963,而使用输入功能时,SAS会删除前导零并返回223963。我想使用完全相同的数字,只是格式化为数字。

谢谢。

1 个答案:

答案 0 :(得分:2)

前导零对数值没有意义。但是您可以将Z格式附加到数字变量上,并让SAS用前导零显示该值。

请注意,您尝试将Z10.用作INFORMAT时,代码中还有另一个错误。没有Z信息。只需使用普通的数字格式将字符串转换为数字即可。

select
 input(cats(substr(SUBSTR(t1.LIABILITY_CTRT_ID,3),1,length(t1.LIABILITY_CTRT_ID)-8)
           ,substr(t1.LIABILITY_CTRT_ID,13)
           )
      ,32.) AS GENERAL_INSURANCE_UOE_RK format=Z10.
,t1.UNDERWRITING_DT