в postgresql, как сохранить пробелы в char

как сохранить пробелы в char? Я создаю 2 таблицы,

      create table test_1 (a int, b char(10)) ;
create table test_2 (a int, b varchar(255));

и вставьте одну строку в test_1

      insert into test_1 values (1 ,'     ');


insert into test_2 select * from test_1;
select a, length(b) from test_2;

и он возвращается

      | a        | length(b)      |
| -------- | -------------- |
| 1        | 0              |

Я ожидаю взрыва, как это делает оракул

      | a        | length(b)      |
| -------- | -------------- |
| 1        | 10             |

есть какой вариант можно попробовать?

1 ответ

Изменить это поведение невозможно.

Соблюдайте также следующее:

      CREATE TABLE test_1 (a int, b char(10));

INSERT INTO test_1 VALUES (1, 'x');

SELECT length(b) FROM test_1;

 length 
--------
      1
(1 row)

SELECT 'y' || b FROM test_1;

 ?column? 
----------
 yx
(1 row)

Все это работает, как того требует стандарт SQL.

Сделайте себе одолжение и никогда не используйте char. Если вам нужно, чтобы значение всегда содержало 10 символов, используйте контрольное ограничение или триггер, который дополняет значения пробелами.

Другие вопросы по тегам