PostgreSQL修剪过多的尾随零:键入numeric但表达式是text类型

Joh*_*ohn 2 postgresql

我正在尝试清除过多的尾随零,我使用了以下查询...

UPDATE _table_ SET _column_=trim(trailing '00' FROM '_column_');
Run Code Online (Sandbox Code Playgroud)

...我收到以下错误:

错误:列"_column_"的表达式是text类型.

我已经玩过引号,因为它通常是文本与数字相比,虽然没有任何运气.

CREATE TABLE语法:

CREATE TABLE _table_ (
 id bigint NOT NULL,
 x bigint,
 y bigint,
 _column_ numeric
);
Run Code Online (Sandbox Code Playgroud)

moh*_*han 7

Postgres 版本 13 现在附带了以下trim_scale()功能:

UPDATE _table_ SET _column_ = trim_scale(_column_);
Run Code Online (Sandbox Code Playgroud)


har*_*mic 6

您可以将参数和结果转换回数字:

UPDATE _table_ SET _column_=trim(trailing '00' FROM _column_::text)::numeric;
Run Code Online (Sandbox Code Playgroud)

另请注意,您不会像使用单引号引用列名称.

  • 这件事发生在我身上 - 人们在20秒左右的时间里殴打我.:)显然,Upvoting. (2认同)
  • 小心这个答案。它将把`100`转换成`1`! (2认同)