gpt4 book ai didi

sql - 在 Postgres 上选择 Distinct(不区分大小写)

转载 作者:行者123 更新时间:2023-12-05 08:46:53 24 4
gpt4 key购买 nike

有人问过here和之前的其他一些地方,但似乎建议的答案不适用于 postgres 或在这种情况下不起作用。

我希望选择不同的列名称,例如:

SELECT DISTINCT column_name FROM table_name WHERE ... ORDER BY column_name 但是我希望消除区分大小写的重复项(例如 Aa 应该被认为是同一件事)

我试过 COLLATE 但所有可用的格式都区分大小写。通过 LOWER()UPPER() 更改大小写将不起作用,因为在这种情况下我需要大小写信息。

我想过这样的事情来获取独特的值(value),但仍然保持这种情况:

SELECT DISTINCT upper(my_column) as upper_case, my_column
FROM my_table
ORDER BY upper(my_column)

但是在不同的查询中引入 my_column 会否定整个事情。

如何在不修改结果本身大小写的情况下获得唯一值(不区分大小写)?

最佳答案

在 PostgreSQL(但不是很多其他数据库)中,您可以使用 DISTINCT ON 子句:

SELECT DISTINCT ON (upper(my_column)) my_column
FROM my_table
ORDER BY upper(my_column)

您甚至可以通过向 ORDER BY 子句添加另一列以使所需结果首先出现来选择要获得的结果:

SELECT DISTINCT ON (upper(my_column)) my_column
FROM my_table
ORDER BY upper(my_column), other_column

文档:DISTINCT Clause

关于sql - 在 Postgres 上选择 Distinct(不区分大小写),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68825706/

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