当我尝试在给定列上运行text
时,Redshift似乎忽略了表中varchar(256)
列(实际上是select distinct
)中的尾随空格。
使用CTE,我得到了预期的行为:
dataeng=# with x as (select 'asdf'::text as y union all select 'asdf '::text as y) select distinct y from x;
y
-------
asdf
asdf
(2 rows)
但是一旦将数据插入表中,redshift便无法分辨出两个值之间的区别:
dataeng=# create table whitespace_test (y text);
CREATE TABLE
dataeng=# insert into whitespace_test values ('asdf'), ('asdf ');
INSERT 0 2
dataeng=# select distinct y from whitespace_test;
y
------
asdf
(1 row)
即使它没有丢失尾随空格:
dataeng=# select distinct '"' || y || '"' from whitespace_test;
?column?
----------
"asdf"
"asdf "
(2 rows)
我肯定会感激redshift主动清理输入,但是我想知道并拥有控制权。
PostgreSQL 10的行为符合预期,并且没有出现此错误。
这是预期的行为,还是我发现了redshift中的错误?