SAS PROC SQL:如何添加尾随空格?

时间:2018-05-14 20:37:35

标签: sas proc-sql

我在工作中遇到这样的问题:

某些系统需要特定的输入,例如:

0000051420189999999                         ABC12345678<20 SPACES>;

这是(some digit) + Sample_Date + (some digit) + x amount of spaces + Sample_KEY + y amount of spaces

我阅读了一些关于字符串连接和将日期转换为字符串的在线帖子。但最后总是消除尾随空格。

PROC SQL;
CREATE TABLE WORK.MAINFRAME_FILE AS 
SELECT CAT('0000', 
           COMPRESS(PUT((Sample_Date), MMDDYY10.), '/',),
           '9999999                         ', 
           Sample_KEY,
           '                                          ') 
           AS INPUT FORMAT=$100.
FROM WORK.TEST
;
QUIT;

如何在末尾添加一些尾随空格,比方说20?感谢

1 个答案:

答案 0 :(得分:2)

如果您将其放入SAS数据集中,只要字段长度足够定义,空格就会自动存在。根据定义,所有SAS列都是空间填充到全长。你可能看不到它们,这取决于你如何看待这个领域,但它们在内部存在。

如果您将它放入SQL Server表或类似表中,它可能取决于您连接到的特定RDBMS以实现此目的。

SAS示例 - 注意x的ascii表示'20'x是空格:

PROC SQL;
CREATE TABLE WORK.MAINFRAME_FILE AS 
SELECT CAT('0000', 
           COMPRESS(PUT((today()), MMDDYY10.), '/',),
           '9999999                         ', 
           Name,
           '                                          ') 
           AS INPUT FORMAT=$100.
FROM SASHELP.CLASS
;
QUIT;

data your_file;
  set work.mainframe_file;
  x = substr(input,60,1);
  put x= $HEX2.;
run;