如何从 select 查询输出中使用不区分大小写的条件编写 select 语句
How to write select statement with a condition of case-insensitive from a select query output
我得到这样的数据
- 多哈
- 多哈
- 迪拜
- 阿布扎比
- 阿布扎比
来自查询select distinct(trim(name)) as loc from locations order by trim(name)
现在我想使用 lower() 或 upper() 和 select 第一条记录删除重复项。
如果我像下面这样使用较低的功能,
select distinct(lower(A.loc)) from( select distinct(trim(name)) as loc from locations order by trim(name) ) as A order by lower(A.loc);
它给出的结果转换为如下所示。
多哈
迪拜
阿布扎比
但我想要前面提到的原始结果。
多哈
迪拜
阿布扎比
SELECT DISTINCT ON (lower(city))
city
FROM
cities
DISTINCT ON
获取任意列并给出第一个重复项。在这种情况下,在内部创建了一个全小写的列。然后取第一条记录,但只取原始列。
注意您没有特殊订单。它将采用随机顺序(例如,数据在内部存储的方式)。要获得大写值,您必须编写:
SELECT DISTINCT ON (lower(city))
city
FROM
cities
ORDER BY lower(city), city DESC
ORDER BY lower(city)
是必需的,因为 DISTINCT ON
需要给定的列排在第一位。之后,您可以按任何其他列进行排序。 ORDER BY column DESC
将大写字母移到顶部。
我得到这样的数据
- 多哈
- 多哈
- 迪拜
- 阿布扎比
- 阿布扎比
来自查询select distinct(trim(name)) as loc from locations order by trim(name)
现在我想使用 lower() 或 upper() 和 select 第一条记录删除重复项。 如果我像下面这样使用较低的功能,
select distinct(lower(A.loc)) from( select distinct(trim(name)) as loc from locations order by trim(name) ) as A order by lower(A.loc);
它给出的结果转换为如下所示。
多哈
迪拜
阿布扎比
但我想要前面提到的原始结果。
多哈
迪拜
阿布扎比
SELECT DISTINCT ON (lower(city))
city
FROM
cities
DISTINCT ON
获取任意列并给出第一个重复项。在这种情况下,在内部创建了一个全小写的列。然后取第一条记录,但只取原始列。
注意您没有特殊订单。它将采用随机顺序(例如,数据在内部存储的方式)。要获得大写值,您必须编写:
SELECT DISTINCT ON (lower(city))
city
FROM
cities
ORDER BY lower(city), city DESC
ORDER BY lower(city)
是必需的,因为 DISTINCT ON
需要给定的列排在第一位。之后,您可以按任何其他列进行排序。 ORDER BY column DESC
将大写字母移到顶部。