Postgres 有没有一种方法可以在不使用 unnest 和 string_to_array 的情况下简化我的 where 子句?

Postgres is there a way to simplify my where clause without using unnest and string_to_array?

以下 SQL 对我有用,并给出了我想要的结果:

select postdomain from post where postdomain not in (select unnest (string_to_array('youtube.com|twitter.com' , '|'))) ;

我想知道是否有办法简化 where 部分?

例如,如果我不想要完全匹配并且需要不区分大小写的 contains 匹配,这个更简单的 SQL 可以在没有 unnest 和 string_to_array 的情况下工作:

select postdomain from post where postdomain !~* 'youtube.com|twitter.com' ;

有没有办法实现类似的精确匹配?

锚定模式:

where postdomain !~* '^youtube.com$|^twitter.com$'

^ 匹配字符串的开头和 $ 结尾。

不需要unnest,直接用array即可:

select postdomain 
from post 
where postdomain <> ALL (string_to_array('youtube.com|twitter.com' , '|'))