子串函数问题

时间:2017-01-11 13:17:31

标签: sql sas

我有一张表格如下:

PROC_TP
112
5255
5255
5255
112
5255
5255

PROC_TP是格式为6的数字。我只想获得第一个数字,所以我使用put函数将其更改为字符:

char_PROC_TP=put(PROC_TP,6.);
format char_PROC_TP $6.;

然后表格如下:

PROC_TP        Char_PROC_TP
112            112
5255           5255
5255           5255
5255           5255
112            112
5255           5255
5255           5255

现在char_PROC_TP是格式为$ 6的字符。 然后我使用substr函数:

first_digit=substr(char_PROC_TP,1,1);

然后我没有任何价值。那么,任何人都可以告诉我它可能是什么问题及其解决方案。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:4)

substrN()将采用数字参数并根据需要自动将其转换为字符并修剪前导和尾随空白。

 First = SUBSTRN(num_var, 1, 1);

请参阅documentation for SUBSTRN

答案 1 :(得分:1)

这种情况正在发生,因为您转换为角色正在创建右对齐值。您可以使用6.格式的理由选项将其修复为6.-L.同样对于第一个字符使用第一个函数,默认为长度$ 1。

data test;
   input PROC_TP;
   char_proc_tp = put(proc_tp,6.-L);
   first_digit=first(char_PROC_TP);
   cards;
112
5255
5255
5255
112
5255
5255
;;;;
run;

phpdocs are browsable here

答案 2 :(得分:0)

使用STRIP功能

char_PROC_TP=strip(put(PROC_TP,6.));

data test;
 Length FIRST_DIGIT $1;
 input PROC_TP;
 char_proc_tp = strip(put(proc_tp,6.));
 first_digit=substr(char_PROC_TP,1,1);
 datalines;
 112
 5255
 5255
 5255
 112
 5255
 5255
 ;