postgresql 12函数奇怪的值/长度行为

问题描述

我在表char(13)中有一个名为a的{​​{1}}列。

我用以下代码创建了一个经典的插入前函数:

test

运行raise notice 'a: -->%<-- len = %',new.a,length(new.a); 时,得到以下输出:

insert into test (a) values('1');

奇怪,不是吗?

解决方法

不,一点也不奇怪。 char是空白的填充数据类型。因此,如果您将'1'分配给您的列,则它实际上存储为'1 '

解决方案很简单:don't use char(n)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...