gpt4 book ai didi

postgresql - 您是否可以为 ORDER BY 子句使用自定义 Postgres 比较函数?

转载 作者:行者123 更新时间:2023-11-29 11:10:28 27 4
gpt4 key购买 nike

在 Python 中,我可以编写一个排序比较函数,它返回集合 {-1, 0, 1} 中的一个项目,并将它传递给排序函数,如下所示:

sorted(["some","data","with","a","nonconventional","sort"], custom_function)

此代码将根据我在函数中定义的整理顺序对序列进行排序。

我可以在 Postgres 中做同样的事情吗?

例如

SELECT widget FROM items ORDER BY custom_function(widget)

编辑:欢迎提供示例和/或文档指针。

最佳答案

是的,你可以,你甚至可以创建一个函数索引来加速排序。

编辑:简单示例:

CREATE TABLE foo(
id serial primary key,
bar int
);
-- create some data
INSERT INTO foo(bar) SELECT i FROM generate_series(50,70) i;
-- show the result
SELECT * FROM foo;

CREATE OR REPLACE FUNCTION my_sort(int) RETURNS int
LANGUAGE sql
AS
$$
SELECT $1 % 5; -- get the modulo (remainder)
$$;
-- lets sort!
SELECT *, my_sort(bar) FROM foo ORDER BY my_sort(bar) ASC;

-- make an index as well:
CREATE INDEX idx_my_sort ON foo ((my_sort(bar)));

手册中充满了如何使用您自己的函数的示例,开始玩吧。

关于postgresql - 您是否可以为 ORDER BY 子句使用自定义 Postgres 比较函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3691662/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com