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

SAS PROC SQL:如何添加尾随空格?,sas,proc-sql,Sas,Proc Sql,我在工作中遇到了这样的问题: 某些系统需要特定的输入,如: 0000051420189999999 ABC12345678<20 SPACES>; 如何在末尾添加一些尾随空格,例如20?谢谢如果您将其放入SAS数据集中,只要字段长度定义充分,空格就会自动存在。根据定义,所有SAS列都填充了完整长度的空间。你可能看不到它们,这取决于你如何看待这个领域,但它们在内部 如果要将其放入SQL Server表或类似表中,则可能取决于要连接的特定

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

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

0000051420189999999                         ABC12345678<20 SPACES>;

如何在末尾添加一些尾随空格,例如20?谢谢

如果您将其放入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;

substr(输入,60,1)做什么?是为了证明那里有一个真实的空间吗?是的。(SAS数据集中总是有一个实际的空格,不管我是否把它放在那里-去掉最后一个
'
,你仍然可以在那里看到它。)使用
repeat
函数可能会更清楚,而不是像那样键入n个空格。@Joe我使用的是SAS的虚拟版本,例如,它没有写入文件的权限。但是我可以手动导出数据集,或者作为一个步骤进行设置。最终我需要一个文本文件格式。我使用了上面的示例代码,但导出(手动)时它的末尾仍然没有空格。您可以复制/粘贴虚拟客户端吗?如果是这样,您可以将其写入日志并将其复制出来。您需要将该值写入变量还是写入文本文件?如果是后者,则在PUT语句上使用指针控件。PROC SQL与这个问题有什么关系?我通常只将文本文件视为固定宽度文件。这就是你想在这里做的吗?@Reeza是的,你是对的。我正在使用SAS的虚拟版本,例如,它没有写入文件的权限。但我可以手动导出数据集,或将导出设置为“步骤”。最终我需要它的文本文件格式。。。
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;