Postgres是否有一种方法可以简化我的where子句,而无需使用unnest和string_to_array?

时间:2019-10-19 07:05:44

标签: sql postgresql postgres-9.6

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

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

我想知道是否有一种方法可以简化where部分?

例如,如果我不希望完全匹配,并且需要不区分大小写的contains匹配,那么这种简单的SQL可以在不需要不必要的和string_to_array的情况下工作:

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

有没有办法类似地实现完全匹配?

2 个答案:

答案 0 :(得分:2)

不需要嵌套,可以直接使用数组:

def DFS(visited, StartNode, GoalNode):
    index =(list(MainDictionary).index(StartNode))
    visited[index] = True
    print(StartNode)

    **# it has to return here out put must be only F - C but function reaches all the nodes
    if StartNode == GoalNode:
        return**

    #This line is for accessing my dictionary data type
    values = ReturnKeyVal(StartNode)
    for key in values:
        index =(list(values).index(key))
        if visited[index] == False and values[key] != 0:

            DFS(visited, key, GoalNode)

def ReturnKeyVal(Target):
    for keys, values in MainDictionary.items():
            if keys == Target:
                return values

visited = [False] * (len(MainDictionary)) 
DFS(visited,"F", "C")

答案 1 :(得分:0)

锚定图案:

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

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