SAS PROC SQL: как добавить конечные пробелы? - PullRequest
0 голосов
/ 14 мая 2018

У меня такая проблема на работе:

В некоторых системах требуется определенный ввод, например:

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 голосов
/ 14 мая 2018

Если вы поместите это в набор данных SAS, пробелы будут там автоматически, если длина поля определена достаточно.Все столбцы SAS по определению дополняются пробелами до полной длины.Вы можете не видеть их в зависимости от того, как вы смотрите на поле, но они есть внутри.

Если вы помещаете это в таблицу SQL Server или подобное, это, вероятно, будет зависеть от конкретногоСУБД, к которой вы подключаетесь, как это сделать.

Пример 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;
...