为什么PostgreSQL SELECT..WHERE CHAR(#)与多余的尾随空格匹配

问题描述 投票:0回答:1

PostgreSQL(不确定其他人)如何选择带有。[[fixed-size char array的SELECT..WHERE,以额外的尾随空间工作?

创建表和简单记录:

postgres=# CREATE TABLE T (v CHAR(3) NOT NULL); CREATE TABLE postgres=# INSERT INTO T (v) VALUES ('abc'); INSERT 0 1

测试简单匹配:

postgres=# SELECT * FROM T WHERE v='abc'; v ----- abc (1 row)

测试不匹配的情况:

postgres=# SELECT * FROM T WHERE v='abcde'; v --- (0 rows)

为什么仍

与多余的尾随空格匹配:

postgres=# SELECT * FROM T WHERE v='abc '; v ----- abc (1 row)
sql postgresql sqldatatypes
1个回答
0
投票
带有postgres=# SELECT * FROM T WHERE v='abc ';

您隐式地执行'abc'的转换,而Postgres在转换为varchar时会默默地截断尾随空格。

© www.soinside.com 2019 - 2024. All rights reserved.