如何过滤包含列值中所有元音的行。例如,表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 教育>