【问题标题】:postgresql 12 function strange value / length behaviourpostgresql 12 函数奇怪的值/长度行为
【发布时间】:2020-12-03 09:59:27
【问题描述】:

我在表test 中有一个名为achar(13) 列。

我用下面这行创建了一个经典的 before insert 函数:

raise notice 'a: -->%<-- len = %', new.a, length(new.a);

当我运行insert into test (a) values('1'); 时,我得到以下输出:

a: -->1            <-- len = 1

奇怪,不是吗?

【问题讨论】:

    标签: sqldatatypes postgresql-12


    【解决方案1】:

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

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

    【讨论】:

    • 实际上还没有赋值,因为我们在一个 BEFORE INSERT 触发函数中,是吗?
    • 分配给要插入的记录中的字段。不管这个问题如何,都不要使用char()
    猜你喜欢
    • 2021-01-17
    • 2012-02-02
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 2018-02-27
    • 2019-06-03
    • 2011-06-14
    • 2020-01-31
    相关资源
    最近更新 更多