选择区分大小写的ANY

时间:2017-12-18 20:06:07

标签: postgresql

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

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

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

更新

我怎样才能从数组列中获取所有唯一值:

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

也许会有所帮助

3 个答案:

答案 0 :(得分:2)

select *
from my_table
where 'tag' ilike any(tags)

Per the documentation:

  

根据活动的语言环境,可以使用关键字ILIKE而不是LIKE来使匹配不区分大小写。

答案 1 :(得分:0)

此查询找到所有

## read in table
text = "ID | Col1 | Col2 | Col3 | Col4 | Col5 | Open1 | Open2 
1 | be rich |buy home | pay edn | Open1 | Not worry | feel secure | care for parents
2 | buy home | be rich | Open1 | Open2 | pay medical expenses | give to causes | leave legacy"
df <- read.delim(text = text, sep = "|", stringsAsFactors = FALSE)
df <- sapply(df, trimws)

答案 2 :(得分:-1)

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