我有一个包含数组列的表,其中包含不同情况下的单词。我可以选择所有带有必需标记的行,如下所示:
SELECT * FROM table WHERE 'tag' = ANY(tags::TEXT[]);
但是如何考虑数组中的单词也可以大写?
UPDATE
这是如何从数组列中获取所有唯一值:
SELECT DISTINCT LOWER(unnest)
FROM (SELECT unnest(tags) FROM table) AS all_tags;
也许它会有所帮助
select *
from my_table
where 'tag' ilike any(tags)
可以使用关键字ILIKE而不是LIKE来根据活动区域设置使匹配不区分大小写。
此查询找到所有
SELECT * FROM (SELECT *, lower(unnest(tags)) AS val FROM table) x WHERE val = 'c++';
您需要做出选择并选择将标记字段设置为大写或不大写,并且数组的内容也处于相同状态。为此,您可以保存标记,或将实际内容更新为大写或小写,并在此字段上定义索引,然后将数组内容设置为相同的状态。