Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Postgres-用户定义的订单序列_Sql_Postgresql - Fatal编程技术网

Sql Postgres-用户定义的订单序列

Sql Postgres-用户定义的订单序列,sql,postgresql,Sql,Postgresql,我在数据库表中有一列,它可能包含数量有限的字符串之一:[“Recht”、“Abteilung”、“Strecke”、“Stelle”、“Gemarkung”、…] 我想对表执行查询,根据此列对结果进行排序,但不是字母数字,而是用户定义的,即“Abteilung”之前的“Recht”后跟“Strecke” 可以这样使用用户定义的顺序吗?在Postgres中使用数组可以实现这一点: order by array_position(array['Recht', 'Abteilung', 'Streck

我在数据库表中有一列,它可能包含数量有限的字符串之一:[“Recht”、“Abteilung”、“Strecke”、“Stelle”、“Gemarkung”、…]

我想对表执行查询,根据此列对结果进行排序,但不是字母数字,而是用户定义的,即“Abteilung”之前的“Recht”后跟“Strecke”


可以这样使用用户定义的顺序吗?

在Postgres中使用数组可以实现这一点:

order by array_position(array['Recht', 'Abteilung', 'Strecke', 'Stelle', 'Gemarkung'], 'a_column') nulls last

数组的使用使得逻辑非常简洁——并且更易于维护。数组也可以作为参数传入,这非常方便。

按情况排序,当column='Recht'时为1,当column='Abteilung'时为1,当column='Abteilung'时为2,结束时为2,类似这样的情况谢谢,这很有用。不过,无需进行否决表决,这是一个有效的问题,有一个有用的答案。