postgreSQL查询列值包含所有元音字母



如何过滤包含列值中所有元音的行。例如,表letters包含列值列表。

str
----
apple
orange
education

我尝试了sql with like command.

select str from letters 
where 
str like '%a%'
and str like '%e%'
and str like '%i%'
and str like '%o%'
and str like '%u%'

我想知道有没有更好的方法来处理这个问题?期望输出:education

您可以使用ilike all()使其更短

select str 
from letters 
where str ilike all (array['%a%', '%e%' , '%i%', '%o%', '%u%'])

可以使用数组

内置数组函数@>意味着包含,这正是您想要的,所以ARRAY['a','e','i','o','u']中的所有值必须在数组regexp_split_to_array(str, 's*')

中手动数组函数

a_horse_with_no_name写在注释

regexp_split_to_array(str, 's*')可以简化为string_to_array(str, null)

所以我把它加到答案

SELECT * FROm table1
WHERE 
regexp_split_to_array(str, 's*') @> ARRAY['a','e','i','o','u'] 
str教育>

最新更新