如何使Postgres字符字段按数字排序

时间:2014-08-04 15:05:10

标签: postgresql

我有以下postgressql表:

CREATE TABLE businesses
    (
      id serial NOT NULL,
      town character varying(200) NOT NULL,
      name character varying(200) NOT NULL,
      employees character varying(200) NOT NULL,
      offices character varying(200) NOT NULL,
      CONSTRAINT businesses_pkey PRIMARY KEY (id)
    )

我需要按员工人数排序。不幸的是,我意识到该表是字符类型,它似乎是一个字符串。有没有办法修改表而不破坏它,将employees字段变成可按数字排序的东西?

2 个答案:

答案 0 :(得分:3)

听起来像一个简单的ALTER TABLE

ALTER TABLE businesses ALTER COLUMN employees TYPE integer USING (CAST(employees AS integer))

但您可能需要调整使用此表的应用程序。

你可以平均时间

ORDER BY CAST(employees AS integer)

但它会很慢,不会使用任何索引。

答案 1 :(得分:2)

使用此查询更改列的类型:

ALTER TABLE businesses ALTER employees TYPE numeric USING cast(employees as numeric);

您可以在此处找到详细信息:http://www.postgresql.org/docs/current/static/sql-altertable.html