postgresql - 将 PostgreSQL 列转换为存储类型
问题描述
我正在为 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"
谷歌没有帮助。有任何想法吗?谢谢
重复:错误不是我的问题。我的问题是我需要将每一列转换为text
,但按该列的正常类型排序。
解决方案
regtype
是一个对象标识符类型,当您不引用系统对象(在这种情况下为类型)时,没有理由使用它。
您应该integer
在第一个查询中将该列转换为:
SELECT id::text
FROM contacts
ORDER BY id::integer;
order by
您可以在子句中使用限定的列名。这将适用于任何可排序类型的列。
SELECT id::text
FROM contacts
ORDER BY contacts.id;
推荐阅读
- firebase - Cloud Functions 部署需要按需付费 (Blaze) 计费方案
- swift - 在 macOS 10.15 终端中运行“vapor run migrate”时出错
- maven - 已编译 jar 中的 IDE、Maven 和隐私
- python - 将连接表限制为 4 行并使用 postgresql 和 sqlalchemy 以 json 格式返回结果
- javascript - 如何在 ES6 中将对象值相乘并保留它们的键
- reactjs - 反应本机文本换行
- node.js - 删除 Firebase 实时数据库阵列中的节点后自动更改节点号
- php - 如何在表单的 PHP 循环中设置单个变量?
- python - 将循环集列中的字典值与 1 或 -1 python 进行比较
- c# - 在 lambda where 条件中使用三元运算符