从文本列中选择不同的值时,Redshift会忽略空格

时间:2019-02-15 22:34:36

标签: sql amazon-redshift

当我尝试在给定列上运行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中的错误?

0 个答案:

没有答案