首页 > 解决方案 > 将字符串转换为数字并保留前导零

问题描述

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

选择

 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。我想要完全相同的数字,只是格式化为数字。

提前致谢。

标签: inputsasproc-sqlenterprise-guide

解决方案


前导零对数值没有意义。但是您可以将 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

推荐阅读