postgresql - 将 PostgreSQL 列转换为存储类型

标签 postgresql postgresql-10

我正在为 PostgreSQL 创建一个查看器。我的 SQL 需要根据该列的正常类型进行排序。举个例子:

表:

CREATE TABLE contacts (id serial primary key, name varchar)

SQL:

SELECT id::text FROM contacts ORDER BY id;

给予:

1
10
100
2

好的,所以我将 SQL 更改为:

SELECT id::text FROM contacts ORDER BY id::regtype;

结果是:

1
2
10
100

不错!但现在我尝试:

SELECT name::text FROM contacts ORDER BY name::regtype;

结果是:

invalid type name "my first string"

Google 帮不上忙。有任何想法吗?谢谢

重复:错误不是我的问题。我的问题是我需要将每一列转换为 text,但按该列的正常类型排序。

最佳答案

regtypeobject identifier type当您不引用系统对象(在本例中为类型)时,没有理由使用它。

您应该在第一个查询中将该列转换为 integer:

SELECT id::text 
FROM contacts 
ORDER BY id::integer;

您可以在 order by 子句中使用限定的列名。这适用于任何可排序类型的列。

SELECT id::text
FROM contacts 
ORDER BY contacts.id;

关于postgresql - 将 PostgreSQL 列转换为存储类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52262492/

相关文章:

PHP + PostgreSQL + ODBC - UTF8 - 变音符号问题

postgresql - 识别postgres扩展版本显示不同版本

linux - 内部服务器错误odoo

java - 通过数据源为 H2 设置事务隔离级别

postgresql - 使用 sequelize 连接现有的 postgres 来表达 js

postgresql - 删除对象的权限被拒绝

postgis - STLineMerge 不会将我的 MULTILINESTRING 放入 LINESTRING

sql - 如何在 PostgreSQL 中限制一个 float

PostgreSQL 10 使用枚举按列表分区

PostgreSQL 10 逻辑复制 : Double entries or primary key conflict