选择区分大小写的ANY

问题描述 投票:0回答:3

我有一个包含数组列的表,其中包含不同情况下的单词。我可以选择所有带有必需标记的行,如下所示:

SELECT * FROM table WHERE 'tag' = ANY(tags::TEXT[]);

但是如何考虑数组中的单词也可以大写?


UPDATE

这是如何从数组列中获取所有唯一值:

 SELECT DISTINCT LOWER(unnest)
        FROM (SELECT unnest(tags) FROM table) AS all_tags;

也许它会有所帮助

postgresql
3个回答
2
投票
select *
from my_table
where 'tag' ilike any(tags)

Per the documentation:

可以使用关键字ILIKE而不是LIKE来根据活动区域设置使匹配不区分大小写。


0
投票

此查询找到所有

SELECT * FROM (SELECT *, lower(unnest(tags)) AS val FROM table) x WHERE val = 'c++';

-1
投票

您需要做出选择并选择将标记字段设置为大写或不大写,并且数组的内容也处于相同状态。为此,您可以保存标记,或将实际内容更新为大写或小写,并在此字段上定义索引,然后将数组内容设置为相同的状态。

© www.soinside.com 2019 - 2024. All rights reserved.