我正在为 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
,但按该列的正常类型排序。
最佳答案
regtype
是 object 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/