【发布时间】:2021-10-19 20:31:48
【问题描述】:
here 和其他一些地方之前已经问过这个问题,但似乎建议的答案要么不适用于 postgres,要么不适用于这种情况。
我正在寻找不同的列名,例如:
SELECT DISTINCT column_name FROM table_name WHERE ... ORDER BY column_name 但是我希望消除区分大小写的重复项(例如,A 和 a 应该被视为同一件事)
我尝试了COLLATE,但所有可用格式都区分大小写。通过LOWER() 或UPPER() 更改大小写将不起作用,因为在这种情况下我需要案例信息。
我想过这样的事情来获取独特的价值,但仍然保持这种情况:
SELECT DISTINCT upper(my_column) as upper_case, my_column
FROM my_table
ORDER BY upper(my_column)
但是在不同的查询中引入 my_column 会否定整个事情。
如何在不修改结果本身的大小写的情况下获得唯一值(不区分大小写)?
【问题讨论】:
-
像
SELECT DISTINCT ON (upper(my_column)) my_column这样的东西有用吗? (已编辑以修复语法) -
顺便说一句,你看过the accepted answer on the question you linked吗?对于这个数据库来说,这实际上是这个问题,它返回的正是你所要求的?如果这不是您想要的,您可能需要澄清您的问题......
-
你是对的。这可以解决问题。我误读了那里的答案。我以为只是
DISTINCT而不是DISTINCT ON -
不用担心;很容易错过:-)
标签: sql postgresql postgresql-11