数据类型转换函数:
- 字符值→数值:var_new = INPUT( var_old, informat );
- 数值→字符值:var_new = PUT( var_old, format );
在上述转换过程中:
- INPUT()函数,informat(输入格式)为目标类型,即数值型
- PUT()函数,format(输出格式)为转换的源类型,即数值型
INPUT()和PUT()不仅可以用于字符型数据与数值型数据之间的转换,还可以进行字符型数据不同格式之间的转换,只要informat 和format 满足以下原则即可:
- informat为目标类型
- format为源类型
自动转换:
1、生成临时变量到PDV中,完成赋值或运算
2、不能自动转换时,则变为缺失值。
3、避免使用自动转换。
4、WHERE语句中不支持自动转换,因为where语句在PDV之前执行。(WHERE语句也不能与自动变量以及新创建的变量连用)
字符型变量:var_str
数值型变量:var_num
一、字符型变量→数值型变量
- 赋值:var_num=var_str;
- 参与算数运算:var_num=var_str+1;
- 与数值型变量比较大小:if (var_str>var_num) then ...;
- 在函数中,参数要求是数值型变量:var_num=sum(var_str,10);
如果var_str转换后不能作为标准数值读入,则必须进行显示转换。
标准数值:
- 数字0-9
- 英文句号
- 科学计数E
- +、-
二、数值型变量→字符型变量
- 赋值:var_str=var_num;
- 与要求是字符型变量的运算符一起使用:var_str='a'||var_num;
- 在函数中,参数要求是字符型变量:var_str=trim(var_num);
自动转换的字符变量使用BEST12.的格式,并且转换后的字符值右对齐,开头由空格补齐。
data work.AreaCodes;
Phonenumber=3125551212;
Code1=substr(Phonenumber,1,3);/*Phonenumber的临时变量值为:‘ 3125551212’,Code1=‘ 3’*/
Code2=substr(Phonenumber,1,4);/*Code2=‘ 31’*/
run;