一、关于变量长度
1、如果没有通过length定义变量长度,则字符变量长度为第一次赋值是长度,数值变量长度默认为8,且默认以best12.格式保存
eg1:
- data test;
- name='jimmy';
- name='jim';
- num=123;
- run;
2、由于数值变量默认输出格式best12.,在转换为字符变量格式的时候,会变成12位字符变量,不足12位的在前面补足空格
eg2:
- data test;
- name='jimmy';
- num=123;
- pin=name||num;
- run;
拼接函数自动将num转换为字符变量,可以看出变量pin长度为17(5+12),123前面补足了9个空格。
3、如果通过length定义了字符变量的长度,则不足定义长度位数的会在后面补足空格
eg3:
- data test;
- length name $8;
- name=' jimmy';
- run;
4、关于length函数,我们看一下帮助菜单length函数的定义:
LENGTH Function
Returns the length of a non-blank character string, excludingtrailing blanks, and returns 1 for a blank character string.eg4:
- data test;
- name=' jimmy ';
- num= 123 ;
- a=length(name);
- b=length(num);
- put a b;
- run;
5、关于substr\trim\scan函数,SUBSTR和TRIM不更改变量的存储长度,也是在新生成变量后面补空格,scan函数结果默认长度200。
二、一些对变量中空格发生作用的字符函数总结
1、只对首尾空格起作用字符函数
trim() 去掉字符串尾部空格,如果字符串为空,则返回一个空格
left() 把字符串开头的空格移到尾部
strip() 去掉字符串开头和结尾的所有空格
cat() 与||作用类似,保留首尾全部空格
catt() 但是连接之前会去掉各字符串尾部空格,相当于连接符结合trim()使用
cats() 但是连接之前会去掉首尾全部空格,相当于连接符结合strip()使用
catx() 但是连接之前会去掉首尾全部空格,并且在字符串之间加上一个指定的字符串2、如果想去除字符中间空格,使用compress函数