Формат Postgres при создании таблицы - PullRequest
2 голосов
/ 27 сентября 2019

Моя работа - тестирование Postgres.Я обычно пишу на SQL, используя SAS с синтаксисом Oracle и Teradata.В нашей тестовой базе данных есть действительно неаккуратная таблица, в которой каждый столбец был создан как символ 255. У меня есть очень простая вещь, которую я пытаюсь сделать, но она не работает.Я хочу создать новую таблицу и переформатировать с 255 до 10. Я также хочу удалить все конечные пробелы.Также "IS NULL" не работает.Даже когда для значения ничего не видно.

PROC SQL;
CONNECT TO POSTGRES(&connectstuff);
EXECUTE(CREATE TABLE common.UNQ_NUM_LIST AS
        SELECT DISTINCT UNIQUE_NUM, 
               BTRIM(PAT_ACCT) AS PAT_ACCT 
        FROM ACCT_DATA.ACCNTS
) by postgres;
DISCONNECT FROM POSTGRES;
QUIT;

Я хочу создать PAT_ACCT в формате символа 10, но не знаю, как это сделать.Могу ли я указать новый формат при создании таблицы?Все, что я пробовал, не сработало.Даже BTRIM на самом деле, кажется, также не избавляется от конечных пробелов в этом значении.И снова, нулевые значения не распознаются с помощью «IS NULL».Я чувствую, что это должно быть очень просто!

1 Ответ

2 голосов
/ 27 сентября 2019

Чтобы повлиять на тип данных, соответствующим образом приведите столбец результата в запросе:

CAST (btrim(pat_acct) AS character(10)) AS pat_acct

Однако установить столбец NOT NULL таким способом невозможно.

Я рекомендую вам выполнить два оператора: один создает таблицу так, как вы хотите, а другой -

INSERT INTO ...
SELECT ... FROM ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...