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' , '|'))
以下 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' , '|'))