0

以下 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' ;

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

4

2 回答 2

2

不需要unnest,你可以直接使用数组:

select postdomain 
from post 
where postdomain <> ALL (string_to_array('youtube.com|twitter.com' , '|')) 
于 2019-10-19T08:46:12.187 回答
0

锚定模式:

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

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

于 2019-10-19T07:13:56.863 回答