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)
postgres=# SELECT * FROM T WHERE v='abc ';
您隐式地执行'abc'的转换,而Postgres在转换为varchar时会默默地截断尾随空格。