Преобразовать строку в числовое и сохранить ведущие нули - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь преобразовать строку в число и использовал следующий код

select

 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 Ответ

2 голосов
/ 07 октября 2019

Лидирующие нули не имеют значения для числового значения. Но вы можете присоединить формат 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
...