为什么 trim 在 Postgres 9.3 中没有完成这项工作?

Why trim in Postgres 9.3 did not do the work?

我们想要 trim postgres 9.3 中 resource 列的前导和尾随 space,这似乎是一项简单的工作。这是 SQL:

update tablename set resource=trim(resource);

查询在 postgres 管理工具 SQL 屏幕中成功执行。然而 space 不是 trimmed。然后我们通过指定id执行SQL:

update tablename set resource=trim(resource) where id=723;

它返回:

Query returned successfully: one row affected, 12 ms execution time.

然而结果是一样的,没有更新。同样的 SQL 在终端 window 中执行,但没有任何反应。

为什么trim在这里不起作用?

据推测,您看到的角色不是真实的 space。您可以使用以下命令查看它的 ASCII 代码:

select ascii(left(resource, 1))
from tablename
where id = 723;

如果你只想去掉第一个字符,你可以这样做:

update tablename
    set resource = substring(resource from 2)
    where id = 723;