в 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 символов, используйте контрольное ограничение или триггер, который дополняет значения пробелами.