PostgreSQL 可以在 ORDER BY 中使用 FOR LOOP 吗?
Posted
技术标签:
【中文标题】PostgreSQL 可以在 ORDER BY 中使用 FOR LOOP 吗?【英文标题】:Can PostgreSQL use FOR LOOP in ORDER BY? 【发布时间】:2021-02-10 04:39:41 【问题描述】:我可以这样写 SQL 语句吗?
SELECT
ARRAY[array]
FROM table1
ORDER BY
FOR i in array_length(array,1) LOOP
array[i]::numeric
END LOOP;
我想要的结果是:
SELECT
ARRAY[array]
FROM table1
ORDER BY array[1]::numeric, array[2]::numeric, ...
我可以吗? :)
【问题讨论】:
【参考方案1】:不,SQL 中没有LOOP
。不过,它是诸如 PL/pgSQL 之类的过程语言的一个元素。见:
但是有一个更简单的方法:
SELECT ...
FROM table1
ORDER BY array_column::numeric[];
数组值按元素值从左到右开箱排序。
要求:
列array_column
必须是一个数组,其元素类型已注册转换为numeric
。像text
或varchar
或其他一些。
否则,您也许可以使用text[]
作为垫脚石:array_column::text[]:numeric[]
。
每个元素都可以投影到合法的numeric
值。
【讨论】:
哦.. 对不起,我不能,但谢谢。 :)以上是关于PostgreSQL 可以在 ORDER BY 中使用 FOR LOOP 吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 PostgreSQL ORDER BY 子句中使用别名?