2016-05-09 3 views
-1

J'ai un proc sql comme celui-ci, le problème est que sas enlever le zéro avant chaque cust_comp_key par exemple FR_C_00000242 se transforme en 242 mais je veux garder le zeo avant 242 ...pourquoi sas supprimant zéro avant un caractère

rsubmit; 
data ca_m_service_2; 
set ca_m_service; 
num_compte = input(substr(CUST_COMP_KEY, 6),Best12.); 
run; 
endrsubmit; 

Merci pour l'aide

Modifier,

J'ai utilisé ceci:

data ca_m_service_3; 
set ca_m_service; 
if length(substr(CUST_COMP_KEY, 6)) >= 8 then newsic=substr(CUST_COMP_KEY, 6); 
    else newsic=repeat('0',8-length(substr(CUST_COMP_KEY, 6))-1)||substr(CUST_COMP_KEY, 6); 

Cela semble fonctionner mais maintenant j'ai besoin de transformer ce vecteur en numérique, comment puis-je faire cela?

Répondre

2

Vous pouvez utiliser z #. formats pour tamponner des nombres avec des zéros de tête. Essayez:

num_compte = input(substr(CUST_COMP_KEY, 6),z8.); 

Ou cela peut être plus intuitive:

data ca_m_service_2; 
    set ca_m_service; 
    format num_compte z8.; 
    num_compte = substr(CUST_COMP_KEY, 6); 
run; 
+0

Merci ça fonctionne bien :) –